ZOJ3603 2012浙江省赛D

题目就是:给出n个字符串,输出其中相同的字母。


表示这道题目一直没有注意到可能会出现重复的,于是就wa了好多次



#include<cstdio> #include<algorithm> #include<cstring> using namespace std; int t, n; char a[25][20]; char atlas[30]; int flag[30]; int cnt[30]; void init(){ scanf("%d", &n); memset(a, 0, sizeof(a)); memset(flag, -1, sizeof(flag)); for (int i = 0; i < n; i++){ scanf("%s", a[i]); } } //注意,字母可能重复 void solve(){ for (int j = 0; j < n; j++){ memset(cnt, 0, sizeof(cnt)); for (int k = 0; k < 12; k++){ cnt[a[j][k] - 'A']++; } for (int i = 0; i < 26; i++){ if (flag[i] == -1) flag[i] = cnt[i]; else flag[i] = min(flag[i], cnt[i]); } } //printf(" flag %d\n", flag['T' - 'A']); for (int i = 0; i < 26; i++){ while (flag[i] > 0 && flag[i]--) printf("%c", atlas[i]); } printf("\n"); } int main(){ atlas[0] = 'A'; for (int i = 1; i < 26; i++){ atlas[i] = atlas[i - 1] + 1; } //for (int i = 0; i < 26; i++) printf("%c", atlas[i]); scanf("%d", &t); while (t--){ init(); solve(); } return 0; } </cstring></algorithm></cstdio>

你可能感兴趣的:(ZOJ3603 2012浙江省赛D)