我一直在寻找解决LCS问题(最长的子序列)的方法,并尝试通过引用Wikipedia上的解释和pascal代码来使用c++编写自己的代码。
我的最终结果是:
#include <iostream>
#include <algorithm>
using namespace std;
int LCS(int a[100], int b[100], int m, int n);
int main()
{
int n, m, i, k, x[100], y[100];
cout << "n i m: " << endl;
cin >> n >> m;
cout << "n array: " << endl;
for(i=1;i<=n;i++)
cin >> x[i];
cout << "m array: " << endl;
for(i=1;i<=m;i++)
cin >> y[i];
k = LCS(x[100], y[100], m, n);
cout << k << endl;
return 0;
}
int LCS(int a[100], int b[100], int m, int n)
{
int c[m][n], i, j;
for(i=0;i<=m;i++)
c[i][0] = 0;
for(i=0;i<=n;i++)
c[0][i] = 0;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(a[i] == b[j])
{
c[i][j] = c[i-1][j-1]+1;
}
else
c[i][j] = max(c[i][j-1], c[i-1][j]);
}
}
return c[m][n];
}
我试图通过g++进行编译,但出现错误:
3.cpp: In function 'int main()':
3.cpp:19: error: invalid conversion from 'int' to 'int*'
3.cpp:19: error: initializing argument 1 of 'int LCS(int*, int*, int, int)'
3.cpp:19: error: invalid conversion from 'int' to 'int*'
3.cpp:19: error: initializing argument 2 of 'int LCS(int*, int*, int, int)'
我不是真的很喜欢c / c++编程,我想知道我的错误在哪里,为什么会发生以及如何解决。谢谢。
最佳答案
只需传递数组名称即可。
这个
LCS(x, y, m, n);
不是这个
LCS(x[100], y[100], m, n);
关于c++ - 从 'int'到 'int*'的无效转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2096381/