poj 3356
题意:给出两个字符串x和y,要求使用最少的操作使得X变为y,求解该最少操作数.
#include<iostream> #include<fstream> using namespace std; int dp[1001][1001]; char a[1010],b[1010]; int n1,n2; void read(){ // ifstream cin("in.txt"); int i,j,k; while(cin>>n1>>a>>n2>>b) { for(i=1;i<=n1;i++) dp[i][0]=i; for(i=1;i<=n2;i++) dp[0][i]=i; for(i=1;i<=n1;i++) for(j=1;j<=n2;j++) { if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]; else dp[i][j]=min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]))+1; } cout<<dp[n1][n2]<<endl; } } int main(){ read(); return 0; }