华为OJ24点游戏算法

来源:互联网 发布:软件apphangb1未响应 编辑:程序博客网 时间:2024/06/16 06:37

描述

问题描述:给出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 <string>  #include <algorithm>  #include <vector>  #include <fstream>  #include <map>using namespace std;int Is24Game(int *a, int i, int result){if (result == 24)return 1;else if (result > 24 || i >= 4)return 0;elsereturn Is24Game(a, i + 1, result + a[i]) ||Is24Game(a, i + 1, result - a[i]) ||Is24Game(a, i + 1, result * a[i]) ||Is24Game(a, i + 1, result == 0 ? 0 : result / a[i]);}int main(){int *a = new int[4];for (int i = 0; i < 4; i++)cin >> a[i];sort(a, a + 4);bool flag = false;do{if (Is24Game(a, 0, 0)){cout <<"true";flag = true;break;}} while (next_permutation(a, a + 4));if (!flag)cout << "false";delete[]a;return 0;}


0 0
原创粉丝点击