博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nyoj43 24 Point game(DFS)
阅读量:4516 次
发布时间:2019-06-08

本文共 2762 字,大约阅读时间需要 9 分钟。

24 Point game

时间限制:
3000 ms  |  内存限制:
65535 KB
难度:
5
描写叙述

There is a game which is called 24 Point game.

In this game , you will be given some numbers. Your task is to find an expression which have all the given numbers and the value of the expression should be 24 .The expression mustn't have any other operator except plus,minus,multiply,divide and the brackets. 

e.g. If the numbers you are given is "3 3 8 8", you can give "8/(3-8/3)" as an answer. All the numbers should be used and the bracktes can be nested. 

Your task in this problem is only to judge whether the given numbers can be used to find a expression whose value is the given number。

输入
The input has multicases and each case contains one line
The first line of the input is an non-negative integer C(C<=100),which indicates the number of the cases.
Each line has some integers,the first integer M(0<=M<=5) is the total number of the given numbers to consist the expression,the second integers N(0<=N<=100) is the number which the value of the expression should be.
Then,the followed M integer is the given numbers. All the given numbers is non-negative and less than 100
输出
For each test-cases,output "Yes" if there is an expression which fit all the demands,otherwise output "No" instead.
例子输入
24 24 3 3 8 83 24 8 3 3
例子输出
YesNo
来源
上传者

感觉很经典的一道深搜题。

昨天下午自己起初给sum定义了一个初始值0。后来发现第二个測试用例不正确。

。那时候实在是不知道哪里错了

以至于昨天晚上做梦都梦到自己AC了这道题 哈哈尴尬尴尬

我自己认为自己的方法没有错。于是今天早上就百度搜搜,发现没人和我的思想一样大哭大哭....别人都说是编程之美这本书上的。

。但是我也没看过

他们的思想都是在一个长度为n的数组中找到随意两个数。然后求和,然后把和再插入数组中。同一时候n--。

直到n=1.

o(︶︿︶)o ,我就仅仅好关闭了百度。

看着自己的程序慢慢调试,而且输出每个可能的结果值。

。后来还真被我发现了。。

由于我初始的sum为0的缘故,

假设仅仅有一个元素5,本来该仅仅有一个结果的。。但是因为我的原因会出现0-5=-5,0+5=5,0*5=0。0/5=0。

。。。傻了傻了。。

于是就又改了下AC了 。。嘿嘿。看来我的梦还是挺灵验的。。

看代码吧:

#include 
#include
#include
int flag,n;double a[10],aim;//double型的把 由于相除嘛 难免会造成精度损失int vis[10];void dfs(double sum){ int cnt=0; for(int i=0;i

当全部元素都用上。

并且sum和aim相差非常小 { flag=1; return ; } for(int i=0;i<n;i++) { if(!vis[i]&&!flag) { vis[i]=1; dfs(sum+a[i]);// dfs(sum-a[i]);// dfs(sum*a[i]);// dfs(sum/a[i]);// dfs(a[i]/sum);// dfs(a[i]-sum);//对于这个数sum仅仅能有6种情况 vis[i]=0; } } } int main() { int ncase; scanf("%d",&ncase); while(ncase--) { scanf("%d %lf",&n,&aim); for(int i=0;i<n;i++) scanf("%lf",&a[i]); flag=0; for(int i=0;i<n;i++)// { memset(vis,0,sizeof(vis)); vis[i]=1; if(!flag) dfs(a[i]);//起初的sum不应该为0,应该是数组中的某一个数、、 }//起初我没有上面这个for循环,仅仅有一个dfs(0);华丽丽的wa... if(flag) printf("Yes\n"); else printf("No\n"); } return 0; }

update:在杭电上做了一道题  今天细致想了想 这道题我的做法始终还是有些欠缺。即使能在nyoj上A了。

所以读者自行取舍。我还是忽略了 比方1 13 5 9 我的程序是执行不出来的。由于我的程序在运算的时候一定要和当前的结果有关。

所以假设想学习新知识看我在杭电上的题解把这两道题一样。也当巩固一下知识。

posted on
2017-05-12 10:58 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/mthoutai/p/6844533.html

你可能感兴趣的文章
在路上,三线城市互联网创业记录
查看>>
spark 编译遇到的错误及解决办法(五)
查看>>
框架篇: React + React-Router + antd + nodejs + express框架开发运用(nodejs做前后端server)...
查看>>
8、使用转换流处理标准输入
查看>>
Git 常用命令
查看>>
Why does Http header contains "X-SourceFiles"?
查看>>
uva 10976 fractions again(水题)——yhx
查看>>
爬虫实战篇---数据入库之去重与数据库
查看>>
CMPSC-132 – Programming and Computation
查看>>
洛谷 P4878 [USACO05DEC] 布局
查看>>
Python MySQL Django一些问题
查看>>
OpenGL------显示列表
查看>>
『科学计算』高斯判别分析模型实现
查看>>
『Pickle』数据结构持久化模块_常用方法记录
查看>>
pycharm 的包路径设置export PYTHONPATH=$PYTHONPATH
查看>>
SQL语句创建函数
查看>>
查找数组元素位置
查看>>
vue开发的打包配置
查看>>
jquery基础
查看>>
端口作用
查看>>