题目描述
问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,但每个数字仅允许使用一次,测试用例保证无异常数字]
输出:
true or false
输入描述:
输入4个int整数
输出描述:
返回能否得到24点,能输出true,不能输出false
#include <iostream>
using namespace std;
void swap(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
bool is24(int a[],int begin,int end,double res)
{
if(begin == end-1)
return a[begin] == res;
else
{
bool flag = false;
for(int i=begin;i<end;i++)
{
swap(a[i],a[begin]);//全排列+递归
flag = flag ||
is24(a,begin+1,end,res + a[begin]) ||
is24(a,begin+1,end,res