您的位置:首页 > 其它

华为OJ24点游戏算法

2017-04-26 15:48 375 查看
描述
问题描述:给出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;
else
return 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: