C++ 最长公共子序列上下 #包括 #包括 使用名称空间std; 整数LCS(字符串x、字符串y、整数n、整数m) { int t[n+1][m+1]; 对于(int i=0;iy; LCS(x,y,x.length(),y.length()); 返回0; }

C++ 最长公共子序列上下 #包括 #包括 使用名称空间std; 整数LCS(字符串x、字符串y、整数n、整数m) { int t[n+1][m+1]; 对于(int i=0;iy; LCS(x,y,x.length(),y.length()); 返回0; },c++,output,C++,Output,o/p=进程返回0(0x0)执行时间:3.342秒 按任意键继续 以下代码的o/p始终为零。idk为什么。plzz帮助。我做错了什么 以下代码的o/p始终为零 因为你的主要目标是: 但是你想要: ... LCS(x,y,x.length(),y.length()); return 0; 除此之外 是一个可变长度数组,请不要使用它们(请参阅),而是在堆中动态分配数组,因为在编译时大小未知。您可以使用std::vector,例如replace intt[n+1][m+1]; 对于(int i=0

o/p=进程返回0(0x0)执行时间:3.342秒 按任意键继续

以下代码的o/p始终为零。idk为什么。plzz帮助。我做错了什么

以下代码的o/p始终为零

因为你的主要目标是:

但是你想要:

...
LCS(x,y,x.length(),y.length());
return 0;

除此之外

是一个可变长度数组,请不要使用它们(请参阅),而是在堆中动态分配数组,因为在编译时大小未知。您可以使用
std::vector
,例如replace

intt[n+1][m+1];

对于(int i=0;iIf您搜索“最长公共子序列c++”在你最喜欢的搜索引擎中,你会发现成千上万的链接,如果不是数十万的话。其中相当多的链接指向堆栈溢出的问题。简而言之,这个问题已经有很多教程、示例和答案。至于你的问题,似乎与作业或练习无关,可能是因为e您的
main
函数确实(无条件地)返回0
。请注意,
main
返回的值按照惯例是一个小的非负整数(范围为
0
255
,包括在内),并且除
0
之外的任何内容都被视为错误。简而言之,您从不使用
LCS
返回的值。
std::array
自动分配(即在堆栈上).
std::vector
将用于动态分配。问题是你在说什么。如果OP需要运行时维度,那么他们就不能使用
std::array
,因为它的大小是编译时常量,并且存储在堆栈上,数据就在其内部。它不在堆上分配(除非有人做了一些愚蠢的事情,比如分配一个指向
std::array
,但即使这样也必须有编译时大小)。@下划线\u d啊,是的,该死我应该做什么更改?@aniketsagar我刚刚编辑了我的答案,你可以使用
std::vector
...
LCS(x,y,x.length(),y.length());
return 0;
...
return LCS(x,y,x.length(),y.length());
 int t[n+1][m+1];
 int t[n+1][m+1];
 for(int i=0;i<=n+1;i++)
   for(int j=0;j<=m+1;j++)
   {
       if(i==0 || j==0)
           t[i][j]=0;
   }
  std::vector<std::vector<int>> t(n+1);
  
  for (int i = 0; i <= n; ++i)
    t[i].resize(m+1);