程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 10887 - Concatenation of Languages(stl set)

10887 - Concatenation of Languages(stl set)

編輯:C++入門知識

題目;10887 - Concatenation of Languages

題目大意:給出語言A和語言B,求這兩種語言拼接可以有多少不同的復合語言。

階梯思路:用set來剔除重復的,注意這裡的輸入要用gets(),因為語言會有空串。還有不要進行多余的,不必要的復制,會超時。


#include
#include
#include
#include
using namespace std;

const int N = 1505;
int t, m, n;
char s1[N][15], s2[N][15];
set 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;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved