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 }

你可能感兴趣的:(HDU)