码迷,mamicode.com
首页 > 其他好文 > 详细

24点

时间:2018-12-30 20:18:27      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:cstring   ==   amount   扑克   i++   4.0   输入格式   mes   sed   

superwyh是一个非常疯狂的24点爱好者,空闲时总是自己拿出扑克来算24点,24点的规则很简单,就是给你4张扑克(从1至13,用A代替1,J代替11,Q代替12,K代替13)通过加减乘除来求得24,各位oier帮了superwyh好多忙,为了报答大家superwyh就和大家做个24点的游戏,superwyh给大家4张牌大家告诉superwyh能不能凑成24就行。

[renqing PS:这道题很easy,是送分的题]

输入格式4张牌的牌面(1<=n<=13)。 

 

输出格式如果能凑成输出”yes”反之输出”no”。 

 

样例输入

A 2 3 4

输出

yes

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int flag[5]={0},num=0,a[5];
string c;
int cd[5];
bool used[5];
bool dfs1(int depth,double amount)
   {
   if (depth==4)
   {
      if (amount>23.999999&&amount<24.000001) return 1;
      else return 0;
   }
      else
      {
         for (int i=0;i<4;i++)
             if (!used[i])
             {
             used[i]=1;
             if (dfs1(depth+1,amount+cd[i])) return 1;
             if (dfs1(depth+1,amount-cd[i])) return 1;
             if (dfs1(depth+1,cd[i]-amount)) return 1;
             if (amount!=0&&dfs1(depth+1,amount*cd[i])) return 1;
             if (amount!=0&&dfs1(depth+1,amount/cd[i])) return 1;
             if (amount!=0&&dfs1(depth+1,cd[i]/amount)) return 1;
             used[i]=0;
             }
   return 0;
   }
}
int main()
{
   for(int i=0;i<=3;i++)
   {
      cin>>c;
      if(c[0]==A)cd[i]=1;
      else if(c[0]==J)cd[i]=11;
      else if(c[0]==Q)cd[i]=12;
      else if(c[0]==K)cd[i]=13;
      else if(c[0]==1 && c[1]==0)cd[i]=10;
      else cd[i]=c[0]-0;
}
   if(dfs1(0,0))
   cout<<"yes"<<endl;
   else
   cout<<"no"<<endl;
   return 0;
}

 

24点

标签:cstring   ==   amount   扑克   i++   4.0   输入格式   mes   sed   

原文地址:https://www.cnblogs.com/637w/p/10200272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!