您的位置:首页 > 其它

UVa 10887 - Concatenation of Languages

2015-12-07 13:53 423 查看
題目:有兩個單詞集合,問從中各取出一個單詞(一集合單詞在前),問能組成多少不同的單詞。

分析:數據結構(DS),哈希表(hash)。直接枚舉,利用hash判重即可。

說明:注意數據中有空行。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <map>

using namespace std;

string set1[1501], set2[1501];

int main()
{
	int T, N, M;
	cin >> T;
	for (int t = 1; t <= T; ++ t) {
		cin >> N >> M;
		map <string, int> hash;
		getline(cin, set1[0]);
		for (int i = 0; i < N; ++ i)
			getline(cin, set1[i]);
		for (int i = 0; i < M; ++ i)
			getline(cin, set2[i]);
		sort(set2, set2+M);
		
		for (int i = 0; i < N; ++ i)
		for (int j = 0; j < M; ++ j)
			if (!hash[set1[i]+set2[j]])
				hash[set1[i]+set2[j]] = 1;
			
		cout << "Case " << t << ": " << hash.size() << endl;
	}
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: