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 }