zoukankan      html  css  js  c++  java
  • 24点的游戏

    题目描述
    给出4个正整数操作数,你的任务是使用运算符(+,-,*,/)和括号对
    操作数进行计算,分析是否能得到24,每个操作数只能使用1次,运算符和
    括号可以多次使用,注意所有的中间结果都是整数。
    输入
    输入包括多行,每行4个正整数,范围是[1,13],输入以0 0 0 0标记结束
    输出
    若输入的4个操作数能计算出24,输出Yes,否则输出No
    样例输入
    1 1 1 1
    2 5 7 8
    0 0 0 0
    样例输出
    No
    Yes

    代码如下:

     1 #include<iostream>
     2 using namespace std;
     3 int a[4];
     4 bool Fun(int n)
     5 {
     6     if(n==1)
     7         return a[0]==24;
     8     for(int i=0;i<n;i++)
     9     {
    10         for(int j=0;j<n;j++)
    11         {
    12             if(i==j) continue;
    13             int a1=a[i],a2=a[j];
    14             a[i]=a1+a2;
    15             a[j]=a[n-1];
    16             if(Fun(n-1)) return true;
    17             a[i]=a1-a2;
    18             a[j]=a[n-1];
    19             if(Fun(n-1)) return true;
    20             a[i]=a1*a2;
    21             a[j]=a[n-1];
    22             if(Fun(n-1)) return true;
    23             if(a2!=0&&a1%a2==0)
    24             {
    25                 a[i]=a1/a2;
    26                 a[j]=a[n-1];
    27                 if(Fun(n-1)) return true;
    28             }
    29             a[i]=a1;
    30             a[j]=a2;
    31         }
    32     }
    33     return false;
    34 }
    35 int main()
    36 {
    37     while(1)
    38     {
    39         cin>>a[0]>>a[1]>>a[2]>>a[3];
    40         if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0) break;
    41         if(Fun(4))
    42             cout<<"Yes"<<endl;
    43         else cout<<"No"<<endl; 
    44     }
    45 } 
  • 相关阅读:
    [hdu2196]Computer树的直径
    [poj2342]Anniversary party树形dp入门
    链式前向星模板
    LintCode-50.数组剔除元素后的乘积
    Markdown的基本语法
    LintCode-8.旋转字符串
    LintCode-1.A + B 问题
    LintCode-61.搜索区间
    LintCode-88.最近公共祖先
    LintCode-54.转换字符串到整数
  • 原文地址:https://www.cnblogs.com/baigg1995/p/4583364.html
Copyright © 2011-2022 走看看