nyoj43 24 Point game(DFS)
24 Point game
- 描写叙述
-
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.
- 例子输入
-
2
4 24 3 3 8 8
3 24 8 3 3 - 例子输出
-
Yes
No - 来源
- 经典改编
- 上传者
- 张云聪
感觉很经典的一道深搜题。
昨天下午自己起初给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 <stdio.h>
#include <math.h>
#include <string.h>
int flag,n;
double a[10],aim;//double型的把 由于相除嘛 难免会造成精度损失
int vis[10];
void dfs(double sum)
{
int cnt=0;
for(int i=0;i<n;i++)
if(vis[i])
cnt++;
if(cnt==n&&fabs(sum-aim)<0.0000001)//一个推断的条件。 当全部元素都用上。 并且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 我的程序是执行不出来的。由于我的程序在运算的时候一定要和当前的结果有关。
所以假设想学习新知识看我在杭电上的题解把点击打开链接这两道题一样。也当巩固一下知识。
nyoj43 24 Point game(DFS)的更多相关文章
- cdoj 1252 24点游戏 dfs
24点游戏 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1252 Descr ...
- 24点游戏&&速算24点(dfs)
24点游戏 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...
- DFS Used%: NaN%问题
一.问题描述: [root@master sbin]# hdfs dfsadmin -report Configured Capacity: 0 (0 B) Present Capacity: 0 ( ...
- LeetCode Sum of Left Leaves
原题链接在这里:https://leetcode.com/problems/sum-of-left-leaves/ 题目: Find the sum of all left leaves in a g ...
- Hadoop:搭建hadoop集群
操作系统环境准备: 准备几台服务器(我这里是三台虚拟机): linux ubuntu 14.04 server x64(下载地址:http://releases.ubuntu.com/14.04.2/ ...
- Hadoop2.6.0完全分布式安装
本文地址:http://www.cnblogs.com/myresearch/p/hadoop-full-distributed-operation.html,转载请注明源地址. 我这边是使用了两台主 ...
- Ubuntu_10.04下Hadoop-0.20.2集群配置手册
Ubuntu_10.04下Hadoop-0.20.2集群配置手册 一.软硬件环境的准备 下面的文章来自hadoopor.com,我先交待一下我自己的环境: 两台机器,每台机器上面两个虚机(vmware ...
- hadoop默认3个核心配置文件说明
1 获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知 ...
- Hadoop2.3.0具体安装过程
前言: Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-co ...
随机推荐
- 【JavaScript】关于 setInterval() 调用函数方法的一次实验
实验主题: setInterval() 方法是 JS 中比较常用的一个方法.setInterval() 方法可以按照指定的周期 ( 毫秒 ) 来调用函数方法或计算表达式. setInterval() ...
- 对python的想法
作为计算机专业的学生,在编程语言之余,我认为掌握一门脚本语言是很必要的.尤其是现在在数据分析,AI,机器学习等各个方面都大放异彩的python.相比于之前接触过的Java,C,C++乃至于php等语言 ...
- 编译安装solr
1, 获取安装包 wget http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.rpm wget htt ...
- PTA 11-散列1 电话聊天狂人 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/722 5-14 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数 ...
- ThinkPHP3.2 杂记
如果父类有_initialize()方法,子类用任何方法前都会调用父类的 _initialize方法,避免这种现象可以在子类中声明_initialize()方法,可以控制是否调用父类的_initial ...
- BZOJ1068 [SCOI2007]压缩 【区间dp】
题目 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息.压缩后的字符串除了小 写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上一个M(如果当前位 ...
- jenkins配置发送邮件
1.打开系统管理->系统设置,找到邮件设置,如下: 2.SMTP或者其他方式的发送邮件,可自行配置,一下列出了qq邮箱和163邮箱设置的地方,如下图: qq邮箱: 往下拉,找到如下图: 163邮 ...
- inux下rz、sz的简单安装
工具/原料 在xshell或者SecureCRT这样的ssh登录软件里, 通过在Linux界面里输入rz/sz命令来上传/下载文件. 对于RHEL5, rz/sz默认没有安装所以需要手工安装. sz: ...
- Java手机游戏开发简明教程 (SunJava开发者认证程序员 郎锐)
原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Java手机游戏开发实例简明教程 (SunJava开发者认证程序员 郎锐)一、手机游戏编写基础1.手机游戏设计的基 ...
- canvas之webgl的打开方式
OK,一个完整的dome是从无到有的.这篇文章将记录我的webgl之旅.不定时更新. 首先,新建一个canvas元素. 然后获取到它. var e = document.ElementById('ca ...