#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int minimu (int a, int b, int c);
int main (void)
{
int t,i,j;
cin>>t;
while (t != 0)
{
string a;
string b;
cin>>a>>b;
int k;
int len1 = a.length();
int len2 = b.length();
int dp[len1][len2];
dp[0][0] = 0;
for (i = 0; i < len1; i++)
{
dp[i][0] = i;
}
for (j = 0; j < len2; j++)
{
dp[0][j] = j;
}
for (i = 1; i < len1; i++)
for (j = 1; j < len2; j++)
{
if (a[i] == b[j])
k = 2;
else
k = 0;
dp[i][j] = minimu(dp[i-1,j]+1,dp[i,j-1]+1,dp[i-1][j-1]+k);
}
cout<<dp[len1-1][len2-1]<<"\n";
t--;
}
return 0;
}
int minimu (int a, int b, int c)
{
int foo = min(a,min(b,c));
return foo;
}
這是用於計算將一個字符串轉換爲另一個字符串時的最小操作數的程序。用於將只允許操作是:int *轉換不允許int錯誤的原因是什麼?
1. Deleting a character
2. Inserting a character
3. Substituting a character
現在,當我編譯這個程序,它顯示了錯誤:
從int無效的轉換*爲int [-fpermissive]
在我更新二維數組dp[i,j]
的行中。爲什麼會發生?
'int dp [len1] [len2];'其中'len1'和'len2'不是常量,** **無效**標準C++。 g ++支持這種語言擴展(從C99借用)。在C++中使用例如'的std :: VECTOR'。 – 2014-10-04 10:48:58