我在python中有像这样的递归函数
def recon(i,j):
if i == 0 or j == 0:
return []
elif x[i-1] == y[j-1]:
return recon(i-1,j-1) + [x[i-1]]
elif table[i-1,j] > table[i,j-1]:
return recon(i-1,j)
else:
return recon(i,j-1)
我试图用c ++重写它,但问题是行
return recon(i-1,j-1) + [x[i-1]]
我试图这样做是c ++,但它有点编译,有没有办法连接像python这样的数组并返回它们。
答案 0 :(得分:3)
不是数组。但你可以用矢量来做到这一点。
vector<int> x = ...;
vector<int> y = ...;
x.insert(x.end(), y.begin(), y.end()); // append y to x
您可以使用动态分配的内存进行类似的操作,但使用矢量更容易。
答案 1 :(得分:1)
可能你可以试试这个
for(int j=0;j<10; j++)
mer[j]=a[j];
for(int i=0; i<10; i++, j++)
mer[j]=b[i];
其中mer,a和b已经初始化了数组变量。
答案 2 :(得分:0)
您需要创建一个大小正确的新数组,以包含两个现有数组,然后循环两个以复制它们(在第二个复制时不要忘记在目标数组上保留偏移量)< / p>
答案 3 :(得分:0)
这里似乎不需要递归:
vector<int> recon(int i, int j) {
vector<int> ret;
while(i > 0 && j > 0)
if(x[i-1] == y[j-1])
ret.push_back(x[--i]), --j;
else if(table[i-1][j] > table[i][j-1])
--i;
else
--j;
std::reverse(ret.begin(), ret.end());
return ret;
}
(免责声明:未经测试)