华为oj初级 24点游戏算法

    xiaoxiao2021-03-25  126

    描述 问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利 输入: 4个1-10的数字。[数字允许重复,测试用例保证无异常数字] 输出: true or false 知识点 循环 运行时间限制 10M 内存限制 128 输入 输入4个int整数 输出 返回能否得到24点,能输出true,不能输出false 样例输入 7 2 1 10 样例输出 true

    #include <iostream> #include<vector> #include<algorithm> #include<string> using namespace std; bool flag = false; void is24(double num, int index,vector<int> &v){ if (num == 24){ flag = true; return ; } if (index > 3 || num > 24) return; for (int i = 0; i < 4; i++){ if (i == 0){ is24(num + v[index], index + 1, v); } else if (i == 1){ is24(num - v[index], index + 1, v); } else if (i == 2){ is24(num*v[index], index + 1, v); } else { is24(num / v[index], index + 1, v); } if (flag) break; } } int main(){ vector<int> v(4); cin >> v[0] >> v[1] >> v[2] >> v[3]; int result = 0; sort(v.begin(), v.end()); do{ is24(result, 0, v); } while (next_permutation(v.begin(), v.end())); if (flag)cout << "true" << endl; else cout << "false" << endl; return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-18756.html

    最新回复(0)