题目;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