1、问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,测试用例保证无异常数字]
输出:
True or False
2、代码
穷举实现,注意除法除数为0,不知道哪些还没考虑到
-
/******************************************************************************
-
-
Copyright (C), 2001-2013, Huawei Tech. Co., Ltd.
-
-
******************************************************************************
-
File Name :
-
Version :
-
Author :
-
Created : 2013/03/12
-
Last Modified :
-
Description :
-
Function List :
-
-
History :
-
1.Date : 2013/03/12
-
Author :
-
Modification: Created file
-
-
******************************************************************************/
-
#include <iostream>
-
#include <string>
-
#include <math.h>
-
int Calculate ( int x, int y, int z, int w)
-
{
-
if (x+y+z+w==24)
-
return true;
-
else if (x+y+z-w==24) return true;
-
else if ((x+y)*(z+w)==24) return true;
-
else if ((x-y)*(z+w)==24) return true;
-
else if ((x-y)*(z-w)==24) return true;
-
else if ((x+y+z)*w==24) return true;
-
else if ((x-y-z)*w==24) return true;
-
else if ((x+y-z)*w==24) return true;
-
else if (w!=0 && (x*y*z)/w==24) return true;
-
else if ((x*y)*(z+w)==24) return true;
-
else if ((x*y)*(z-w)==24) return true;
-
else if ((x*y)*z-w==24) return true;
-
else if ((x*y)*z+w==24) return true;
-
else if (x*y*z*w==24) return true;
-
else if (w!=0 && (x+y)+(z/w)==24) return true;
-
else if (w!=0 && (x+y)*(z/w)==24) return true;
-
else if ((x*y)+z+w==24) return true;
-
else if ((x*y)+z-w==24) return true;
-
else if (w!=0 && (x*y)-(z/w)==24) return true;
-
else if (w!=0 && (x*y)+(z/w)==24) return true;
-
else if ((x*y)-z-w==24) return true;
-
else if ((x*y)+(z*w)==24) return true;
-
else if ((x*y)-(z*w)==24) return true;
-
else if (z*w !=0 && (x*y)/(z*w)==24) return true;
-
else if ((z-w)!=0 && (x*y)/(z-w)==24) return true;
-
else if ((z+w)!=0&&(x*y)/(z+w)==24) return true;
-
else
-
return false;
-
}
-
bool Game24Points(int a, int b, int c, int d)
-
{
-
//TODO: Add codes here ...
-
int data[4]={a,b,c,d};
-
int i,j,m,n;
-
for (i=0;i<4;i++)
-
{
-
for (j=0; j<4&&j!=i; j++)
-
{
-
for (m=0; m<4&&m!=j&&m!=i; m++)
-
{
-
for (n=0; n<4&&n!=i&&n!=j&&n!=m;n++)
-
{
-
if (Calculate ( data[i], data[j], data[m], data[n]) == true)
-
{
-
return true;
-
}
-
}
-
}
-
}
-
}
-
return false;
-
-
}
阅读(1036) | 评论(0) | 转发(0) |