uva 409 - Excuses, Excuses!

句子中的单词的查找

先将每个单词存起来,然后逐个比较;并且把每个单词的长度存起来,会节省时间

View Code
 1 #include <stdio.h>
 2 #include <string.h>
 3 struct node
 4 {
 5     char s[105];
 6     int num;
 7 }a[25];
 8 int main()
 9 {
10     int m, n, max, i, j, k, len, flag, x, p=1;
11     char str[25][100], c[100];
12     int b[25];
13     while(scanf("%d%d",&m,&n) != EOF)
14     {
15         getchar();
16         memset(b, 0, sizeof(b));
17         max = 0;
18         for(i = 0;i < m;i++)
19         {
20             gets(a[i].s);
21             a[i].num = strlen(a[i].s);
22         }
23         for(i = 0;i < n;i++)
24         {
25             gets(str[i]);
26         }
27         for(i = 0;i < n;i++)
28         {
29             j = 0;
30             while(str[i][j] != '\0')
31             {
32                 if((str[i][j] >= 'A' && str[i][j] <= 'Z')||(str[i][j] >= 'a' && str[i][j] <= 'z'))
33                 {
34                     len=0;
35                     while((str[i][j] >= 'A' && str[i][j] <= 'Z')||(str[i][j] >= 'a' && str[i][j] <= 'z'))
36                     {
37                         c[len] = str[i][j];
38                         len++;
39                         j++;
40                     }
41                     for(k = 0;k < m;k++)
42                     {
43                         if(len == a[k].num)
44                         {
45                             flag=0;
46                             for(x = 0; x < len; x++)
47                             {
48                                 if(c[x] != a[k].s[x] && c[x] != a[k].s[x]+32&&c[x] != a[k].s[x]-32)
49                                 flag=1;
50                             }
51                             if(flag == 0)
52                             b[i]++;
53                         }
54                     }
55                 }
56                 else
57                 {
58                     j++;
59                 }
60             }
61             if(max < b[i])
62             max = b[i];
63         }
64         printf("Excuse Set #%d\n",p);
65         for(i = 0;i < n; i++)
66         {
67             if(b[i] == max)
68             puts(str[i]);
69         }
70         puts("");
71         p++;
72     }
73     return 0;
74 }
posted @ 2012-06-04 01:14  琳&leen  阅读(130)  评论(0编辑  收藏  举报