1042 Shuffling Machine,1050 String Subtractio
1042 Shuffling Machine
普通模拟即可,注意每一次交换牌的时候需要更新start数组(当前卡牌的顺序),并且清空ans数组(交换后的卡牌顺序)
#include<bits/stdc++.h>
using namespace std;
const int N = 54;
int start[N + 1],ans[N + 1],a[N + 1];
char mp[5] = {'S','H','C','D','J'};
int main() {
int k; cin >> k;
for(int i = 1; i <= N; i++) start[i] = i;
for(int i = 1; i <= N; i++) cin >> a[i];
for(int i = 1; i <= k; i++){
for(int j = 1; j <= N; j++) ans[a[j]] = start[j];
for(int j = 1; j <= N; j++){
start[j] = ans[j];
ans[j] = 0;
}
}
for(int i = 1; i <= N; i++){
char ch = mp[(start[i] - 1) / 13];
cout << ch << (start[i]-1) % 13 + 1;
if(i < N) printf(" ");
}
return 0;
}
1050 String Subtraction
题目大意:
题目解析:
题目的意思就是输出s1字符串每个单词(根据空格分开)的每个字符的不含有s2中的字符的字符串(每一个单词按空格分开)
只需要用map记录一下,注意判断空格,遇到空格,不能直接输出空格,需要判断s2中是否有空格,没有在输出,否则会出现格式错误。
#include<bits/stdc++.h>
using namespace std;
const int N = 10010;
map<char, int> mp; // 使用 char 作为键
int main() {
string s1, s2;
getline(cin, s1); // 使用 getline 读取 string 类型的输入
getline(cin, s2);
// 将 s2 中的所有字符存入 map,值设为 1
for(int i = 0; i < s2.size(); i++){
mp[s2[i]] = 1;
}
// 遍历 s1 并输出不在 s2 中的字符
for(int i = 0; i < s1.size(); i++){
if(s1[i] == ' '){
if(!mp[s1[i]]) cout << " "; // 如果当前字符是空格,直接输出空格
continue; // 继续下一个字符的处理
}
if(!mp.count(s1[i]))
cout << s1[i];
}
return 0;
}