交叉数学课程

Cross Math Program

本文关键字:      更新时间:2023-10-16

我们经常被分配做交叉数学难题。我决定写一个c++程序来解决交叉数学问题。我构建了下面的程序,但是由于某种原因,每当我用这个数字和运算符的组合运行它时,程序只输出done,而不提供实际的数字。简而言之,我的问题是,究竟为什么会出现这种情况,我该如何解决?

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

相关文章:
  • 没有找到相关文章