生成c++24点游戏算法代码
时间: 2023-10-04 17:08:50 浏览: 45
以下是一个基于深度优先搜索(DFS)的 C++ 24点游戏算法代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int TARGET = 24; // 目标值
const double EPSILON = 1e-6; // 浮点数误差
bool dfs(vector<double>& nums) {
if (nums.size() == 1) { // 如果只有一个数,判断是否等于目标值
return abs(nums[0] - TARGET) < EPSILON;
}
for (int i = 0; i < nums.size(); i++) {
for (int j = 0; j < nums.size(); j++) {
if (i == j) continue; // 不能选自己
double a = nums[i], b = nums[j];
vector<double> next_nums;
for (int k = 0; k < nums.size(); k++) {
if (k != i && k != j) {
next_nums.push_back(nums[k]);
}
}
next_nums.push_back(a + b);
if (dfs(next_nums)) return true; // 加法
next_nums.pop_back();
next_nums.push_back(a - b);
if (dfs(next_nums)) return true; // 减法
next_nums.pop_back();
next_nums.push_back(a * b);
if (dfs(next_nums)) return true; // 乘法
next_nums.pop_back();
if (b != 0) {
next_nums.push_back(a / b);
if (dfs(next_nums)) return true; // 除法
next_nums.pop_back();
}
}
}
return false;
}
int main() {
vector<double> nums;
double num;
for (int i = 0; i < 4; i++) {
cin >> num;
nums.push_back(num);
}
if (dfs(nums)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
该算法的思路是,将四个数分成两组,对这两组进行四则运算(加、减、乘、除),得到一个新的数,然后将三个数和这个新数组成一个新的数组,递归调用 DFS 函数。如果最终递归到只有一个数,判断这个数是否等于目标值,如果是则返回 true,否则返回 false。
需要注意的是,浮点数比较时要考虑浮点数误差,否则可能会得到错误的结果。此外,对于除法运算,要注意除数不能为零。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)