题目链接:点击查看

题目大意:模拟24点游戏,判断是否有解,规则如下:给出四张扑克牌,分别对应着1~13中的四个数,若这四个数字可以通过加减乘除四则运算使结果最后为24,则有解,反之无解

题目分析:因为只有四个扑克牌+四种运算,我们可以直接爆搜,这可肯定是不会超时也不会爆栈的,可是这个题目似乎并不是很简单,有时候直接让爆搜的题反而不太会操作了。

这里我是参考了网上一个大佬的思路,也就是一开始先对四张扑克牌进行全排列,枚举出每一种可行的顺序,然后对相邻的两个扑克牌操作即可,这样就能遍历到所有情况了

也没什么好说的了,看代码吧,代码简单易懂:

2021.7.25更新:

数据太水,之前的假算法随便过,更新了一下正解

// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<list>
#include<unordered_map>
#define lowbit(x) (x&-x)
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
template<typename T>
inline void read(T &x)
{T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f;
}
template<typename T>
inline void write(T x)
{if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');
}
const int inf=0x3f3f3f3f;
const int N=1e6+100;
string s[4];
int a[5];
bool flag;
int getnum(string str)
{if(str.size()==2)return 10;      if(str[0]=='A')return 1;if(str[0]=='J')return 11;if(str[0]=='Q')return 12;if(str[0]=='K')return 13;return str[0]-'0';
}
void dfs(int step) {if(flag) {return;}if(step==4) {if(a[1]==24) {flag=true;}return;}int A[5];for(int i=1;i<=4;i++) {A[i]=a[i];}for(int i=1;i<=4-step+1;i++) {for(int j=1;j<=4-step+1;j++) {if(i==j) {continue;}for(int k=1;k<=4;k++) {if(k==1) {a[i]+=a[j];} else if(k==2) {a[i]-=a[j];} else if(k==3) {a[i]*=a[j];} else if(k==4) {if(a[j]==0||a[i]%a[j]!=0) {continue;}a[i]/=a[j];}swap(a[j],a[4-step+1]);dfs(step+1);for(int i=1;i<=4;i++) {a[i]=A[i];}}}}
}
int main()
{
#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);while(cin>>s[0]>>s[1]>>s[2]>>s[3]){for(int i=0;i<4;i++)a[i+1]=getnum(s[i]);flag=false;dfs(1);if(flag)printf("Yes\n");elseprintf("No\n");}return 0;
}

HDU - 1427 速算24点(dfs)相关推荐

  1. HDU 1427 速算24点(dfs)

    Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用'+','-','*','/ ...

  2. HDU 1427 速算24点 (深搜)

    题目链接 Problem Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用' ...

  3. HDU 1427 速算24点(DFS) *

    原题链接:Here! 思路:这是get的别人的代码,写的很棒,用next_permutation()取代了括号的作用,精髓,经典 代码: /*Note:代码写的非常(๑•̀ㅂ•́)و✧用next_pe ...

  4. HDU 1427 速算24点

    http://acm.hdu.edu.cn/showproblem.php?pid=1427 C++版本一 题解:DFS 运算符可以重复,所以一共有4!*4^4种情况,并不算特别多(点数增多就是指数级 ...

  5. [HDU 1427]速度计算24点(DFS暴力搜索)

    主题连接:  http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表示当前已经算出的值是sum,括号里算 ...

  6. HDU1427 速算24点【DFS】

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. 速算C语言程序设计,C语言程序设计课程设计-速算24.doc

    该设计论文已经通过各大高校老师审核认可并通过答辩,准确完整无误.欢迎大家下载学习交流.如有疑问可随时联系店主,竭诚为您解答!! 应用技术学院 课 程 设 计 报 告 课程名称 C语言课程设计 课题名称 ...

  8. 24速算c语言实训报告ppt,C语言课程设计(速算24).doc

    <> 课程设计报告 速算24专业:计算机科学与技术班级:姓名:指导教师:成绩: 计算机与信息工程系 二0一四年二月二十日 目录 1.该系统的功能描述.................... ...

  9. Python写个小游戏:速算24点(上)

    文章目录 前言 速算24点 1. 玩法简介 2. 游戏流程 3. 搭建游戏界面 1). 基本界面 2). 洗牌.发牌 洗牌 发牌 3). 计时器 4). 玩家输入公式(答案) StringVar类 按 ...

最新文章

  1. 图解MySql命令行创建存储过程
  2. 1.6的锁优化(适应性自旋/锁粗化/锁削除/轻量级锁/偏向锁)
  3. python处理表格数据教程_用Python的pandas框架操作Excel文件中的数据教程
  4. 【开源项目】Socket服务端与客户端传输视频文件
  5. 用对拍程序来debug错误程序的错误数据
  6. 系统分析师和系统架构设计师难度比较_系统架构设计师,马上开课了!
  7. Bootstrap圣诞节主题商城网站模板
  8. matdem矩阵维度必须一致_「数据仓库篇」Kimball维度建模方案
  9. Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
  10. 单元测试界的高富帅,Pytest框架,手把手教学,高阶用法实战
  11. 详述ArrayList类contains方法
  12. i7-9700与E5 2667 V2空载功耗对比
  13. 电信版本-中兴B860AV1.1-T-S905M-B NAND闪存 线刷救砖固件
  14. pscs6怎么做html模板,ps cs6设计个人作品网页模板教程(6)
  15. 《打造高可用监控系统》之——Prometheus使用TIKV进行远程读(remote_read)和远程写(remote_write)
  16. eNews 第二十四期/2007.05
  17. springBoot的shiro的简单项目部署
  18. 以太坊白皮书(中英对照版)
  19. 一款技术人必备的接口测试神器:Apifox
  20. (HEBUT)机械原理课程设计——自动打印机

热门文章

  1. 初步认识Volatile-什么叫缓存一致性呢?
  2. Java语法糖之foreach
  3. SpringBoot profile配置
  4. FastDFS集群部署
  5. scanf与gets的区分
  6. tcp与ip协议的区别
  7. python 网络爬虫requests模块
  8. 别用这种方式聊天,你都不知道自己是怎么聊死的
  9. 阿里云云客服平台正式商业化
  10. DoD模型与OSI模型的关系及其协议对应关系