我一直在寻找解决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/

10-11 22:39