gpt4 book ai didi

c++ - 用整数拼图给定的正方形;使用递归的解决方案

转载 作者:行者123 更新时间:2023-11-30 01:49:38 25 4
gpt4 key购买 nike

所以使用下面的代码,我应该能够读取一个数组,选择一个起点(通常是数组[0],然后在给定索引处添加或减去值以在数组中移动.这个难题的目的是使用递归函数到达数组的最后一个元素。我现在的问题是它总是告诉我它是可解的(这就是我想要的),但不是在它的情况下实际上不是一个可解的数组。当我将数组传递给它时

int array[] = { 3, 6, 4, 1, 3, 4, 2, 5, 3, 0 };
bool solved = IsSolvable(0, array, 10);

它工作正常,应该如此。但是当我通过它时

int arraytest[] = { 3, 1, 2, 3, 0 };
bool solved2 = IsSolvable(0, arraytest, 5);

它没有说 return false 它应该。这应该是不可能的,因为当它到达值为 3 的 arraytest[4] 时,它将无限地在 3 和 3 之间移动。我在我的代码中修复了这个所以不会有循环,但我仍然希望它返回数组不可解。谁能看出为什么没有?

bool IsSolvable(int index, int array[], int size){
if (index == size - 1){ return true; }
else if (index > size - 1 || index < 0){
return false;
}
else if (array[index] == -1) { cout << "here i am" << endl; return false; }
else {
int temp = array[index];
array[index] = -1;

bool found = IsSolvable(index + array[index], array, size) || IsSolvable(index - array[index], array, size);
array[index] = temp;
return found;
}
}

我会附上一张照片,以便更容易理解。 Each step

最佳答案

你代码中的小错误,在: bool found = IsSolvable(索引+数组[索引],数组,大小)|| IsSolvable(index - array[index], array, size);您需要使用 temp 而不是 array[index],如下所示: bool found = IsSolvable(索引+临时,数组,大小)|| IsSolvable(index - temp, array, size);

关于c++ - 用整数拼图给定的正方形;使用递归的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com