每隔一段时间我们都会被指定为跨数学拼图。我决定编写一个可以解决交叉数学问题的C ++程序。我构建了以下程序,但出于某种原因,每当我使用数字和运算符的组合运行它时,程序只输出完成,并且不提供实际数字。简而言之,我的问题是,为什么会出现这种情况,我该如何解决?
#include <iostream>
#include <algorithm>
int main(){
int numbers[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
do{
//Horizontal tests
if ((numbers[0] + numbers[1]) - numbers[2] != 7)
continue;
if ((numbers[3] * numbers[4]) * numbers[5] != 6)
continue;
if ((numbers[6] * numbers[7]) / numbers[8] != 4)
continue;
//Vertical tests
if ((numbers[0] * numbers[3]) - numbers[6] != 1)
continue;
if ((numbers[1] + numbers[4]) - numbers[7] != 4)
continue;
if ((numbers[2] / numbers[5]) - numbers[8] != 2)
continue;
std::cout << "got a number..." << std::endl;
for (int i = 0; i < 9; i++){
std::cout << numbers[i] << " ";
if (i == 2 || i == 5)
std::cout << std::endl;
}
std::cout << std::endl;
break;
} while (std::next_permutation(numbers, numbers + 9));
std::cout << "done" << std::endl;
}
The current code represents this cross math puzzle: [0] + [1] - [2] = 7 * + / [3] * [4] * [5] = 6 - - - [6] + [7] / [8] = 4 = = = 1 4 2 (where [x] is the index in the array)
答案 0 :(得分:0)
if ((numbers[6] * numbers[7]) / numbers[8] != 4)
continue;
此行与您的声明不符合
[0] + [1] - [2] = 7
* + /
[3] * [4] * [5] = 6
- - -
[6] + [7] / [8] = 4
= = =
1 4 2
(其中[x]
是数组中的索引)