跨数学计划

时间:2016-11-01 00:13:53

标签: c++ permutation

每隔一段时间我们都会被指定为跨数学拼图。我决定编写一个可以解决交叉数学问题的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)

1 个答案:

答案 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]是数组中的索引)