UVA - 409 Excuses, Excuses!
2016-07-05 23:51
399 查看
题目大意:输入一些关键字和几句话,求出现最多个关键字的那句话,重复出现累加。
解题思路:储存关键字和话,去比较就可以了。一开始当成子串去比较,实际上完整单词相同才能算。
解题思路:储存关键字和话,去比较就可以了。一开始当成子串去比较,实际上完整单词相同才能算。
#include<iostream> #include<cstdio> #include<string.h> using namespace std; char word[25][25]; char str[25][100]; char s[25][100]; int num[25]; int count = 0; int K, E; int cmp(char *str) { char t[100]; int l = strlen(str); int i = 0, j = 0, tot = 0, tag = 0; for (i = 0; i < l; i++) { if(!(str[i] >= 'a' && str[i] <= 'z')) { t[tag] = '\0'; for (int j = 0; j < K; j++) { if(strcmp(t, word[j]) == 0) tot++; } tag = 0; continue; } t[tag] = str[i]; tag++; } return tot; } int main() { while (scanf("%d%d", &K, &E) != EOF) { getchar(); memset (num, 0, sizeof(num)); memset (word, '0', sizeof(word)); memset (str, '0', sizeof(str)); int i, j; for (i = 0; i < K; i++) gets(word[i]); for (i = 0; i < E; i++) gets(s[i]); for (i = 0; i < E; i++){ for (j = 0; s[i][j] != '\0'; j++){ if (s[i][j] >= 'A' && s[i][j] <= 'Z') str[i][j] = s[i][j] - 'A' + 'a'; else str[i][j] = s[i][j]; } str[i][j] = '\0'; } for (i = 0; i < E; i++) num[i] = cmp(str[i]); int max = 0; for (i = 0; i < E; i++) if (num[i] > max) max = num[i]; printf("Excuse Set #%d\n", ++count); for (i = 0; i < E; i++) if (num[i] == max) puts(s[i]); printf("\n"); } return 0; }
相关文章推荐
- 1.10055 - Hashmat the brave warrior
- 2.10071 - Back to High School Physics
- 3.458 - The Decoder
- 4.694 - The Collatz Sequence
- 6.494 - Kindergarten Counting Game
- 7.490 - Rotating Sentences
- 8.414 - Machined Surfaces
- 9.488 - Triangle Wave
- A.457 - Linear Cellular Automata
- B.489 - Hangman Judge
- C.445 - Marvelous Mazes
- 1.10494 - If We Were a Child Again
- 2.424 - Integer Inquiry
- 3.10250 - The Other Two Trees
- 5.465 - Overflow
- 6.113 - Power of Cryptography
- 7.10161 - Ant on a Chessboard
- 8.621 - Secret Research
- 9.401 - Palindromes
- A.537 - Artificial Intelligence?