1 条题解
-
0
C :
#include "stdio.h" int L[1001][1001]; char a[1000],b[1000]; int d1,d2; int min(int a,int b,int c) { if(a>b) a=b; if(a>c) a=c; return a; } int main() { int i,j; while(gets(a)!=NULL) { gets(b); d1=strlen(a); d2=strlen(b); for(i=0,j=0;j<=d2;j++) L[i][j]=j; for(i=0,j=0;i<=d1;i++) L[i][j]=i; for(i=0;i<d1;i++) for(j=0;j<d2;j++) if(a[i]==b[j]) L[i+1][j+1]=L[i][j]; else L[i+1][j+1]=min(L[i+1][j]+1,L[i][j+1]+1,L[i][j]+1); printf("%d\n",L[d1][d2]); } return 0; }
C++ :
#include<iostream> #include<string> #include<cstring> #include<algorithm> using namespace std; int f[255][255]={0}; int main() { string s1,s2; int i,j,len1,len2; while (cin>>s1>>s2) { memset(f,0x7f,sizeof(f)); f[0][0]=0; len1=s1.size(); len2=s2.size(); for (i=0;i<=len1;i++) for (j=0;j<=len2;j++) if (i>0||j>0) if (i>0&&j>0&&s1[i-1]==s2[j-1]) f[i][j]=f[i-1][j-1]; else { if (j>0) f[i][j]=min(f[i][j],f[i][j-1]+1); //删除 if (i>0&&j>0) f[i][j]=min(f[i][j],f[i-1][j-1]+1); //改写 if (i>0) f[i][j]=min(f[i][j],f[i-1][j]+1); //插入 } cout<<f[len1][len2]<<endl; } return 0; }
- 1
信息
- ID
- 759
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者