【noi 2.5_1789】算24(dfs)
最开始我想的是全排列+枚举符号和括号的方法,但是我自己倒腾了很久还是打不对,只好向他人请教。
正解很机智——直接随意将几个数“捆绑”在一起,值存在其中一个数上,其他数标记不可再选,直到只剩下一个数,再判断这个数是否为24。
- 1 #include<cstdio>
- 2 #include<cstdlib>
- 3 #include<cstring>
- 4 #include<algorithm>
- 5 #include<iostream>
- 6 using namespace std;
- 7
- 8 const double eps=0.00000001;
- 9 double a[4];
- 10 int v[4];
- 11
- 12 double mabs(double x)
- 13 { return x>0?x:-x; }
- 14
- 15 int dfs(int x)
- 16 {
- 17 if (x==3)
- 18 {
- 19 for (int i=0;i<4;i++)
- 20 if (!v[i] && mabs(a[i]-24.0)<eps) return 1;
- 21 return 0;
- 22 }
- 23 /*for (int i=0;i<4;i++)
- 24 if (!v[i])
- 25 for (int j=0;j<4;j++)
- 26 if (!v[j]&&i!=j)
- 27 {
- 28 v[j]=1;
- 29 double tmp=a[i],tmpp=a[j];
- 30
- 31 a[i]=tmp+tmpp;
- 32 if (dfs(x+1)) return 1;
- 33 a[i]=tmp-tmpp;
- 34 if (dfs(x+1)) return 1;
- 35 a[i]=tmpp*tmp;
- 36 if (dfs(x+1)) return 1;
- 37 a[i]=tmpp/tmp;
- 38 if (dfs(x+1)) return 1;
- 39
- 40 a[i]=tmp;
- 41 v[j]=0;
- 42 }*///244ms
- 43 for (int i=0;i<4;i++)
- 44 if (!v[i])
- 45 for (int j=i+1;j<4;j++)//区别
- 46 if (!v[j])
- 47 {
- 48 v[j]=1;
- 49 double tmp=a[i],tmpp=a[j];
- 50
- 51 a[i]=tmp+tmpp;
- 52 if (dfs(x+1)) return 1;
- 53 a[i]=tmp-tmpp;
- 54 if (dfs(x+1)) return 1;
- 55 a[i]=tmpp-tmp;//
- 56 if (dfs(x+1)) return 1;
- 57 a[i]=tmpp*tmp;
- 58 if (dfs(x+1)) return 1;
- 59 a[i]=tmpp/tmp;
- 60 if (dfs(x+1)) return 1;
- 61 a[i]=tmp/tmpp;//
- 62 if (dfs(x+1)) return 1;
- 63
- 64 a[i]=tmp;
- 65 v[j]=0;
- 66 }//102ms
- 67 return 0;
- 68 }
- 69
- 70 int main()
- 71 {
- 72 while (1)
- 73 {
- 74 for (int i=0;i<4;i++) scanf("%lf",&a[i]);
- 75 if (!a[0]) break;
- 76 memset(v,0,sizeof(v));
- 77 if (dfs(0)) printf("YES\n");
- 78 else printf("NO\n");
- 79 }
- 80 return 0;
- 81 }
【noi 2.5_1789】算24(dfs)的更多相关文章
- 24点游戏&&速算24点(dfs)
24点游戏 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...
- hdu 1427 速算24点 dfs暴力搜索
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem De ...
- 【DFS】算24点
[tyvj2802/RQNOJ74]算24点 描述 几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”.您作为游戏者将得到4个1~9之间的自然数作为操作数,而您 ...
- HDU 1427 速算24点【数值型DFS】
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu 1427 速算24点
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1427 速算24点 Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A( ...
- Hdu1427 速算24点 2017-01-18 17:26 46人阅读 评论(0) 收藏
速算24点 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...
- HDU 1427 速算24点 (深搜)
题目链接 Problem Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用' ...
- 洛谷【P1236】算24点
我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html 题目传送门:https://www.luogu.org/problemnew/show/P ...
- 洛谷P1236 算24点
题目描述 几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”.您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数进行适当的算术运算, ...
- 洛谷 P1236 算24点
题目描述 几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为"算24点".您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数 ...
随机推荐
- UnityToLaya小插件-找出空格并替换
unity导出的文件中经常会出现带有空格的节点或者文件夹 而这些空格在本地开发测试过程中不会出现,当这些带有空格路径的文件需要放到网络上时,就出现问题了 所以这里写了一个简单的查找并清理空格的插件, ...
- 【MySQL 基础】MySQL必知必会
MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...
- 【JavaWeb】JSTL 标签库
JSTL 标签库 简介 JSTL(JSP Standard Tag Library),即 JSP 标准标签库.标签库是为了替换代码脚本,使得整个 jsp 页面变得更加简洁. JSTL 有五个功能不同的 ...
- LeetCode237 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 - ...
- docker logs 查看容器日志操作
查看日志 官方文档:https://docs.docker.com/engine/reference/commandline/logs/ # 查看指定数量的实时日志 # docker logs -tf ...
- ctfhub技能树—sql注入—整数型注入
打开靶机 查看页面信息 查看回显位 查询数据库名 查询表名 查询字段 查询字段信息 使用sqlmap食用效果更佳 查数据库名 python2 sqlmap.py -u http://challenge ...
- 面试时通过volatile关键字,全面展示线程内存模型的能力
面试时,面试官经常会通过volatile关键字来考核候选人在多线程方面的能力,一旦被问题此类问题,大家可以通过如下的步骤全面这方面的能力. 1 首先通过内存模型说明volatile关键字的作用 ...
- 大数据系列1:一文初识Hdfs
最近有位同事经常问一些Hadoop的东西,特别是Hdfs的一些细节,有些记得不清楚,所以趁机整理一波. 会按下面的大纲进行整理: 简单介绍Hdfs 简单介绍Hdfs读写流程 介绍Hdfs HA实现方式 ...
- python(re正则)
import re #导入模块 info = 'qwewwer12332423kdsjfkl2342kdjfl213nkafal123123' 例1: res1 = re.compile('er( ...
- Maven 依赖机制
概述 在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级.让我们看一个案例研究,以了解它是如何工作的.假设你想使用 Log4j 作为项目的日志.这里你要做什么? 传统方式 访问 ...