我有一个如下所示的数组([2] [10]大小):
5 | 13 | 12 | 2 | 7 | 12 | 3 | 1 | 4 | 5
1 | 10 | 5 | 1 | 14 | 6 | 4 | 1 | 7 | 2
4 | 9 | 17 | 5 | 6 | 2 | 7 | 21 | 8 | 1
用户将输入一个数字,代码将计算连续数字的总和,它将返回起始行和列。
ex:input = 48并返回row = 1,column = 1
input = 36并返回row = 2,column = 6
我的示例代码只返回“finished”而不是row = 0,column = 1.出了什么问题?
int sum;
int column;
int row;
bool situ = false;
int number = 12;
int puzzle[] = { (4,6,5,1,2), (3,5,6,7,8) };
for(int i=0; i<2; i++)
{
sum = 0;
for(int j=0; j<6; j++)
{
sum = 0;
for(int k=j; k<6; k++)
{
sum += puzzle[j];
if( number == sum && !situ)
{
row = i;
column = k;
cout << "row = " << i << endl;
cout << "column = " << j << endl;
}
if( !situ)
break;
}
if( !situ)
break;
}
if( !situ)
break;
}
cout << "finished";
答案 0 :(得分:2)
您
if( !situ)
break;
陈述是个问题。您将situ
初始化为false
并且永远不会更改它。因此,你总是在第一次循环后中断。
答案 1 :(得分:0)
#include<iostream>
using namespace std;
int main()
{
int sum;
int column;
int row;
bool situ = false;
int number = 12;
int puzzle[2][10] = { {4,6,5,1,2}, {3,5,6,7,8} };
for(int i=0; i<2; i++)
{
sum = 0;
for(int j=0; j<5; j++)
{
sum = 0;
for(int k=j; k<5; k++)
{
sum += puzzle[i][k];
if( number == sum && !situ)
{
row = i;
column = k;
cout << "row = " << i << endl;
cout << "column = " << j << endl;
}
// if( !situ)
// break;
}
// if( !situ)
// break;
}
// if( !situ)
// break;
}
cout << "finished";
}enter code here