只有一个正确解决方案的无限循环
Infinite loop with only one correct solution
当我
输入值> 3 时,代码在无限循环上运行。
还仅显示输入的两个正确解决方案中的一个,以防输入arr = [1,0,3,4]
。
解决方案应该是:{1,3}
和{0,4}
void find_sum (){
int i , j , k, *arr, size , target;
cout << "Enter size of array" <<endl;
cin >> size;
arr = new int[size];
cout << "Enter array elements " << endl;
for( k = 0 ; k < size ; k++){
cin >> arr[k];
}
cout << "Enter your target " << endl;
cin >> target;
i = 0 ;
j = size - 1;
while (i < j ){
if(arr[i] + arr[j] == target )
cout << "Solution :" << arr[i] <<" " << arr[j] <<endl;
if ( arr[i] + arr[j] < target )
i++;
if (arr[i] + arr[j] > target )
j--;
}
}
int main()
{
find_sum();
return 0;
}
似乎您假设数组arr
已排序,因为每次测试解决方案并且总和太低时,您都会增加i
。这相当于获取列表中的下一个元素,假设它更大。
如果 ( arr[i] + arr[j]
此外,如果总和等于目标,则输出解决方案,但永远不会更改i
和j
。它们保持不变,循环继续。这就是为什么你只有一个解决方案。但请注意,在i
超过数组大小或小于 0 j
后,代码将崩溃。您应该将此条件添加到 while 循环中。
相关文章:
- 循环无限运行C++解决骑士之旅问题
- 是否有可能实现O(N)时间和O(1)空间解决方案,以实现C++中的字符串循环移位
- C++ 循环屏障中的倒计时使用原子变量出错[请无锁的解决方案]
- 只有一个正确解决方案的无限循环
- 高速解决方案以循环浏览不同变量的所有组合,并使用启动步骤停止方案(C )
- 如果找不到解决方案,我如何留下递归循环,而不会打印任何东西
- 这段代码处于无限循环中,想知道如何解决它
- 第一个函数中的无限循环不知道如何解决
- 用 A* 在C++中解决 8 个谜题会导致无限循环
- 卡死胡同-无休止的循环,没有解决方案
- 对于同一循环的这两个连续组,是否有更有效的解决方案
- 循环查找解决方案
- 简单的尝试 c++ 的捕获循环解决方案
- 用于交替 for 循环的 C++ 通用解决方案
- 如何解决由文件末尾的 getline 引起的无限循环 (C++)
- 在c++中,任何更好的方法都可以做到这一点,计算谜题的解决方案(49!结果,49个循环)
- 一个while循环的重要解决方案
- 如果-否则循环以找到解决方案
- 在一个文件夹(及其子文件夹)的所有文件上循环:最简单的解决方案
- 嵌套for循环解决方案