zoukankan      html  css  js  c++  java
  • 速算24点

    速算24点相信绝大多数人都玩过。就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)。要求只用'+','-','*','/'运算符以及括号改变运算顺序,使得最终运算结果为24(每个数必须且仅能用一次)。游戏很简单,但遇到无解的情况往往让人很郁闷。你的任务就是针对每一组随机产生的四张牌,判断是否有解。我们另外规定,整个计算过程中都不能出现小数。

    输入

    每组输入数据占一行,给定四张牌。

    输出

    每一组输入数据对应一行输出。如果有解则输出"Yes",无解则输出"No"。

    样例输入

    样例输出

    Yes
    No

    解题思路  括号  (x1@y1)@(x1@y1) 和((x1@y1)@x2)@y2  这两种方式 运用前排列就行了 

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 map<string,int> ma;
     4 int card[10],flag;
     5 string name;
     6 bool judge(int x){ return x==24; }
     7 void dfs(int shu1,int shu2,int pos){
     8     if(flag==1) return;
     9     if(pos==4){
    10         if(judge(shu1+shu2)||judge(shu1-shu2)||judge(shu1*shu2)) flag=1;
    11         else{
    12             if(shu2!=0&&shu1%shu2==0&&judge(shu1/shu2)) flag=1;
    13         }
    14         return;
    15     }
    16     dfs(shu1+shu2,card[pos+1],pos+1);
    17     dfs(shu1-shu2,card[pos+1],pos+1);
    18     dfs(shu1*shu2,card[pos+1],pos+1);
    19     if(shu2!=0&&shu1%shu2==0) dfs(shu1/shu2,card[pos+1],pos+1);
    20     dfs(shu1,shu2+card[pos+1],pos+1);
    21     dfs(shu1,shu2-card[pos+1],pos+1);
    22     dfs(shu1,shu2*card[pos+1],pos+1);
    23     if(card[pos+1]!=0&&shu2%card[pos+1]==0) dfs(shu1,shu2/card[pos+1],pos+1);
    24 }
    25 
    26 int main(){
    27     ma["1"]=1,ma["2"]=2,ma["3"]=3,ma["4"]=4,ma["5"]=5,ma["6"]=6;
    28     ma["7"]=7,ma["8"]=8,ma["9"]=9,ma["10"]=10,ma["A"]=1,ma["J"]=11,ma["Q"]=12,ma["K"]=13;
    29     while(cin>>name){
    30         flag=0;
    31         card[1]=ma[name];
    32         for(int i=2;i<=4;i++) cin>>name,card[i]=ma[name];
    33         sort(card+1,card+1+4);
    34         do{
    35             dfs(card[1],card[2],2);
    36         }while(next_permutation(card+1,card+1+4)&&flag!=1);
    37         printf("%s
    ",flag?"Yes":"No");
    38     }
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    ckfinder+ckeditor配置经验
    人人商城模块研究
    微擎小程序支付功能+退款功能
    php服务器网络请求
    linux对workerman的扩展和配置
    linux安装php_screw加密php代码
    webForm渲染视图的基本方法
    sql注入和暴库
    数据库设计命名规范
    枚举、结构体、联合体的简单应用程序-C语言
  • 原文地址:https://www.cnblogs.com/qq-1585047819/p/11414818.html
Copyright © 2011-2022 走看看