给出集合a的个数,给出集合b的个数,
问有ab集合任意结合,组成的集合c有几个单词。
一开始想直接a×b不就得出来了。。
后来发现漏了一种情况
a中有 as , a
b中有 sa ,a
这样只能构成三种。
所以做法应该是组合所有情况,组合完判断是否重复。
注意一行中可能有空格。。所以要用getline或者gets
AC代码;
#include<iostream>
#include<string>
#include<map>
#include<stdio.h>
using namespace std;
string str1[1505];
string str2[1505];
map<string ,int> m;
int main () {
int t;
int Case = 1;
int a,b;
int num1,num2;
cin >> t;
while (t--) {
int res = 0;
num1 = num2 = 0;
cin >> a >> b;
m.clear();
getchar();
for (int i = 0; i < a;i++) {
getline(cin , str1[i]);
}
for (int i = 0 ; i < b ;i++) {
getline(cin ,str2[i]);
}
for (int i = 0 ; i < a ;i++) {
for (int j = 0 ; j < b ;j++) {
string temp = str1[i] + str2[j];
if (m[temp] == 0) {
res++;
m[temp] = 1;
}
}
}
cout << "Case "<< Case++<<": " <<res<<endl;
}
}