Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1413070
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: C/C++

2014-03-20 15:39:49

1、问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,测试用例保证无异常数字]
输出:
True or False
2、代码
穷举实现,注意除法除数为0,不知道哪些还没考虑到

点击(此处)折叠或打开

  1. /******************************************************************************

  2.   Copyright (C), 2001-2013, Huawei Tech. Co., Ltd.

  3.  ******************************************************************************
  4.   File Name :
  5.   Version :
  6.   Author :
  7.   Created : 2013/03/12
  8.   Last Modified :
  9.   Description :
  10.   Function List :
  11.               
  12.   History :
  13.   1.Date : 2013/03/12
  14.     Author :
  15.     Modification: Created file

  16. ******************************************************************************/
  17. #include <iostream>
  18. #include <string>
  19. #include <math.h>
  20. int Calculate ( int x, int y, int z, int w)
  21. {
  22.     if (x+y+z+w==24)
  23.         return true;
  24.     else if (x+y+z-w==24) return true;
  25.     else if ((x+y)*(z+w)==24) return true;
  26.     else if ((x-y)*(z+w)==24) return true;
  27.     else if ((x-y)*(z-w)==24) return true;
  28.     else if ((x+y+z)*w==24) return true;
  29.     else if ((x-y-z)*w==24) return true;
  30.     else if ((x+y-z)*w==24) return true;
  31.     else if (w!=0 && (x*y*z)/w==24) return true;
  32.     else if ((x*y)*(z+w)==24) return true;
  33.     else if ((x*y)*(z-w)==24) return true;
  34.     else if ((x*y)*z-w==24) return true;
  35.     else if ((x*y)*z+w==24) return true;
  36.     else if (x*y*z*w==24) return true;
  37.     else if (w!=0 && (x+y)+(z/w)==24) return true;
  38.     else if (w!=0 && (x+y)*(z/w)==24) return true;
  39.     else if ((x*y)+z+w==24) return true;
  40.     else if ((x*y)+z-w==24) return true;
  41.     else if (w!=0 && (x*y)-(z/w)==24) return true;
  42.     else if (w!=0 && (x*y)+(z/w)==24) return true;
  43.     else if ((x*y)-z-w==24) return true;
  44.     else if ((x*y)+(z*w)==24) return true;
  45.     else if ((x*y)-(z*w)==24) return true;
  46.     else if (z*w !=0 && (x*y)/(z*w)==24) return true;
  47.     else if ((z-w)!=0 && (x*y)/(z-w)==24) return true;
  48.     else if ((z+w)!=0&&(x*y)/(z+w)==24) return true;
  49.     else
  50.         return false;
  51. }
  52. bool Game24Points(int a, int b, int c, int d)
  53. {
  54.     //TODO: Add codes here ...
  55.     int data[4]={a,b,c,d};
  56.     int i,j,m,n;
  57.     for (i=0;i<4;i++)
  58.     {
  59.         for (j=0; j<4&&j!=i; j++)
  60.         {
  61.             for (m=0; m<4&&m!=j&&m!=i; m++)
  62.             {
  63.                 for (n=0; n<4&&n!=i&&n!=j&&n!=m;n++)
  64.                 {
  65.                     if (Calculate ( data[i], data[j], data[m], data[n]) == true)
  66.                     {
  67.                         return true;
  68.                     }
  69.                 }
  70.             }
  71.         }
  72.     }
  73.     return false;

  74. }


阅读(988) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~