百练 OJ 2801 填词

//ID: 百练 OJ 2801 填词
//题目地址: http://poj.grids.cn/problem/2801
//My Name: Tanky_Woo
//My Website: C++奋斗乐园|C++学习|算法学习|ACM/ICPC学习
//Website Link: http://www.cpply.com/
//My BBS: C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛
//BBS Link:http://www.cppleyuan.com/
//My Blog:www.wutianqi.com
//豆瓣小组:http://www.douban.com/group/cppleyuan/
//QQ:17611904
//QQ群:C++奋斗乐园①群:19333724(满) ②群:23840480 (满)③群:17314377 ④群:23829384
//转载请写上本帖链接 www.cpply.com|www.cppleyuan.com|www.wutianqi.com
//及名称”Tanky Woo与ACM一起走过的日子”和“C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 //这个题的题目需要看仔细了,因为题目说了“输入保证填词游戏至少有一组答案”
//所以可以直接把所有输入的字符再去掉需要找到的字符,剩下的排序就可以了
//这里用characters[]数组表示字典顺寻,直接按顺序输出这个方法可以值得学习
#include <iostream>
using namespace std;
 
int M, N, P;
char board[11][11];
char word[101][11];
int characters[26];
 
int main()
{
	scanf("%d %d %d", &M, &N, &P);
	int i, j;
	for(i = 0; i < N; i++)                 //输入N行M个字符,并且在characters[]数组累加
	{
		scanf("%s", board[i]);
		for(j = 0; j < M; j++)
			characters[board[i][j] - 'A']++;       
	}
	for(i = 0; i < P; i++)               //去掉需要找到的字符,剩下即为“神秘单词”的地府
	{
		scanf("%s", word[i]);
		int len = strlen(word[i]);
		for(j = 0; j < len; j++)
			characters[word[i][j] - 'A']--;
	}
	for(i = 0; i < 26; i++)             //输出“神秘单词”    
	{
		if(characters[i] != 0)
		for(j = 0; j < characters[i]; j++)
			printf("%c",'A' + i);
	}
	printf("\n");
	return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

发表评论

电子邮件地址不会被公开。 必填项已用*标注