速算24点

题意:随机给你四张牌,包括 A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)。要求只用'+','-','*','/'运算符以及括号改变运算 顺序,使得最终运算结果为24(每个数必须且仅能用一次)。针对每一组随机产生的四张牌,判断是否有解。我们另外规定,整个计算过程中都不能出现小数。

思路:开始时对于里面的括号加在哪里,感觉没有方向;之后看了博乐的文字思路讲解 之后,自己敲了代码;

//Accepted    1427    234MS    2072K    1747 B    G++
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
int getvalue(const string str)
{
if(str[] >= ''&&str[] <= '') return str[] - '';
else if(str[] == '') return ;
else if(str[] == 'A') return ;
else if(str[] == 'J') return ;
else if(str[] == 'Q') return ;
else if(str[] == 'K') return ;
}
int cal(int a,int b,int op)
{
if(op == ) return a+b;
else if(op == ) return a - b;
else if(op == )return a*b;
else return (b==||a%b)?inf : a/b;
} bool dfs(int* v)
{
int t[]={};
for(int i = ;i <= ;i++){// 先处理(v[0],v[1])与(v[1],v[2]),之后处理中间的符号,如(1+2)*(3-4)
t[] = cal(v[],v[],i);
for(int j = ;j <= &&t[] != inf;j++){
t[] = cal(v[],v[],j);
for(int k = ;k <= &&t[] != inf;k++){
t[] = cal(t[],t[],k);
if(abs(t[]) == ) return true; // 需要取绝对值;
}
}
}
for(int i = ;i <= ;i++){ // 从前往后计算
t[] = cal(v[],v[],i);
for(int j = ;j <= &&t[] != inf;j++){
t[] = cal(t[],v[],j);
for(int k = ;k <= &&t[] != inf;k++){
t[] = cal(t[],v[],k);
if(abs(t[]) == ) return true;
}
}
}
return false;
}
int main()
{
string s;stringstream str;
while(getline(cin,s)){
int v[];
str.clear();
str<<s;
string stmp;
for(int i = ;str>>stmp;){
v[i++] = getvalue(stmp);
}
sort(v,v+);
int flag = ;
do{
if(dfs(v)){
flag = ;
break;
}
}while(next_permutation(v,v+));
puts(flag?"Yes":"No");
}
}

hdu 1427 dfs的更多相关文章

  1. HDU 5143 DFS

    分别给出1,2,3,4   a, b, c,d个 问能否组成数个长度不小于3的等差数列. 首先数量存在大于3的可以直接拿掉,那么可以先判是否都是0或大于3的 然后直接DFS就行了,但是还是要注意先判合 ...

  2. Snacks HDU 5692 dfs序列+线段树

    Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...

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

    主题连接:  pid=1427">http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表 ...

  4. hdu 1427 速算24点 dfs暴力搜索

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

  5. HDU - 1427 / UESTC - 1252 经典dfs

    很好奇为什么hzwer那种稍改一下还是无法过样例,代码我没看出问题 换了一种用桶组合挑取两个数不断回溯的做法 这是HDU1427的代码,后者改一改就行了 #include<bits/stdc++ ...

  6. HDU 1427 速算24点【数值型DFS】

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

  7. hdu 1427 速算24点

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1427 速算24点 Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A( ...

  8. HDOJ 1427(dfs) 速算24点

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路分析: 题目要求判断是否存在一种运算组合使得4个数的计算结果为24,因为搜索的层次为3层,不 ...

  9. HDU 5877 dfs+ 线段树(或+树状树组)

    1.HDU 5877  Weak Pair 2.总结:有多种做法,这里写了dfs+线段树(或+树状树组),还可用主席树或平衡树,但还不会这两个 3.思路:利用dfs遍历子节点,同时对于每个子节点au, ...

随机推荐

  1. 《RESTful Web Services》第一章 使用统一接口

    序言 HTTP是一种应用层协议.SOAP和一些Ajax Web框架都将HTTP作为一种传输信息的协议,难以充分利用HTTP层的基础设施. 1.2 如何保持交互的可见性     可见性是HTTP的一个核 ...

  2. 第一章 00 StringUtil.cpp和StringUtil.hh分析

    /* * StringUtil.hh * * Copyright 2002, Log4cpp Project. All rights reserved. * * See the COPYING fil ...

  3. Android ADB启动失败 ADB server out of date

    调试Android程序时总提示ADB未运行,转到命令行方式下启动ADB, adb kille-server停止ADB, 然后再运行adb start-server 随后提示: adb server i ...

  4. APP运营干货分享

    从移动互联网市场总监岗位出发,从几个方面来阐述移动互联网部门如何制定一份运营推广策划案,至于关于移动互联网,移动电商是大趋势这些虚的.空泛的文字,不展开说了. 一.竞品分析 1.选择竞品,做好定位(选 ...

  5. MATLAB的循环结构

    循环结构有两种基本形式:while 循环和for 循环.两者之间的最大不同在于代码的重复是如何控制的.在while 循环中,代码的重复的次数是不能确定的,只要满足用户定义的条件,重复就进行下去.相对地 ...

  6. LeetCode里有特色的问题存档

    002* Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respectively. F ...

  7. 浅谈用java解析xml文档(一)

    关于xml本身的语法及使用的环境不多说了,网上有很多规则, 然对xml文档进行解析,一般分为四种解析方式,基于java官方文档的Dom 和Sax解析,还有就是基于 第三方jar包的 Jdom 和 Do ...

  8. 用js实现简单排序算法

    一.冒泡排序 var arr1=[3,9,2,7,0,8,4]; for(var i=0;i<arr1.length;i++){ for(var j=i+1;j<arr1.length;j ...

  9. FontAwesome 奥森图标的学习

    很早之前,就看到大家在使用代码做出很漂亮的图标,但是觉得需求不是很大,所以就没有看,但是技多不压身,这次有时间来学习下. FontAwesome官方网站 1,下载文件包 里面有两个文件夹,css 和 ...

  10. mysqlimport 导入文件到数据库命令

    mysqlimport -h 172.16.145.125 -u ocetl -pocetl test  --fields-terminated-by='|' '/home/ocetl/tmp_use ...