题目;10887 - Concatenation of Languages
题目大意:给出语言A和语言B,求这两种语言拼接可以有多少不同的复合语言。
阶梯思路:用set来剔除重复的,注意这里的输入要用gets(),因为语言会有空串。还有不要进行多余的,不必要的复制,会超时。
#include<stdio.h> #include<string.h> #include<set> #include<string> using namespace std; const int N = 1505; int t, m, n; char s1[N][15], s2[N][15]; set<string> vis; int main () { scanf("%d", &t); for (int i = 1; i <= t; i++ ) { scanf("%d%d%*c", &m, &n); int j, k; for (j = 0; j < m; j++ ) gets(s1[j]); for (j = 0; j < n; j++) gets(s2[j]); int count = 0; for (j = 0; j < m; j++) { char s[30]; strcpy(s, s1[j]); int len = strlen(s1[j]); for (k = 0; k < n; k++) { s[len] = ‘\0‘; strcat(s, s2[k]); if (!vis.count(s)) // printf("%s\n", s); vis.insert(s); } } printf("Case %d: %d\n",i, vis.size()); vis.clear(); } return 0; }
10887 - Concatenation of Languages(stl set),布布扣,bubuko.com
10887 - Concatenation of Languages(stl set)
原文:http://blog.csdn.net/u012997373/article/details/22887857