HDU 2895 Edit distance(贪心)

题目链接

头一次做贪心这么给力。。。1Y,题意就是给俩字符串,如何把前一个变成后一个,4种操作,输出最短,且按 a d m c的优先级输出,分情况讨论下OK了。

PS:本来以为是二维DP,一看1W,我慌乱了。。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 char p1[10001],p2[10001];
 4 int main()
 5 {
 6     int i,j,len1,len2;
 7     while(scanf("%s%s",p1,p2)!=EOF)
 8     {
 9         len1 = strlen(p1);
10         len2 = strlen(p2);
11         if(len1 > len2)
12         {
13             for(i = 0;i <= len1-len2-1;i ++)
14             printf("d %c\n",p1[i]);
15             for(j = 0;j <= len2-1;j ++)
16             {
17                 printf("m %c\n",p2[j]);
18             }
19         }
20         else if(len1 == len2)
21         {
22             for(i = 0;i <= len2-1;i ++)
23             {
24                 printf("m %c\n",p2[i]);
25             }
26         }
27         else if(len1 < len2)
28         {
29             for(i = 0;i <= len2-len1-1;i ++)
30             printf("a %c\n",p2[i]);
31             for(j = len2-len1;j <= len2-1;j ++)
32             printf("m %c\n",p2[j]);
33         }
34     }
35     return 0;
36 }
posted @ 2012-06-23 16:49  Naix_x  阅读(264)  评论(0编辑  收藏  举报