首页 > 其他 > 详细

微软2014实习生及秋令营技术类职位在线测试-题目4 : Most Frequent Logs

时间:2014-04-13 17:49:06      阅读:436      评论:0      收藏:0      [点我收藏+]

这一题的题目有点问题,我觉得应该把b) format strings have edit distance  5 of each other变成larger than 5.

bubuko.com,布布扣
 1 #include<stdio.h>
 2 #define M 100
 3 /*
 4 * 采用动态规划算法,
 5 * 详见http://en.wikipedia.org/wiki/Edit_distance 
 6 */
 7 int wfEditDistance(char * a, char * b)
 8 {
 9     int i=0,j=0;
10     int dist[257][257];
11     
12     for(i=0;i<257;i++)
13         dist[i][0] = i;
14     for(j=0;j<257;j++)
15         dist[0][j] = j;
16     
17     i=0;j=0;
18     while(a[i]!=\0)
19     {
20         j=0;
21         while(b[j]!=\0)
22         {
23             if(*a == *b)
24                 dist[i+1][j+1] = dist[i][j];
25             else
26             {
27                 dist[i+1][j+1] = dist[i][j+1]+1<dist[i+1][j] +1? dist[i][j+1]+1:dist[i+1][j] +1;
28                 dist[i+1][j+1] = dist[i+1][j+1]<dist[i][j]?dist[i+1][j+1]:dist[i][j];
29             }
30             j++;
31         }
32         i++;
33     }
34     return dist[i][j];
35 }
36 
37 int main(void)
38 {
39     char format[M][256];//存储模板
40     char ** f = format;
41     int cnt[M];//存储相同string的个数
42     char temp[256];
43     int i=0,f=0;
44     for(i=0;i<M;i++)
45         cnt[i] = -1;
46     while(gets(temp))
47     {
48         //第一个string
49         if(cnt[0] == -1)
50         {
51             *f = temp;
52             cnt[0] = 1;
53             continue;
54         }
55         f = 0;
56         //遍历是否已有相同模板产生的string
57         for(i=0;cnt[i]!=-1 && i<M;i++)
58         {
59             if(wfEditDistance(temp,format[i])<=5)
60             {
61                 cnt[i]++;
62                 f=1;
63                 break;
64             }
65         }
66         //如果没有,则把当前string作为新的模板产生的第一个string
67         if(f==0)
68         {
69             *(f+i) = temp;
70             cnt[i] = 1;
71         }
72     }
73 
74 
75 
76     return 0;
77 
78 }
声明:没有提交online judge, 不知道程序是否会对,测试的case是可以通过的。
bubuko.com,布布扣

 

 

微软2014实习生及秋令营技术类职位在线测试-题目4 : Most Frequent Logs,布布扣,bubuko.com

微软2014实习生及秋令营技术类职位在线测试-题目4 : Most Frequent Logs

原文:http://www.cnblogs.com/echoht/p/3662077.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!