hihocoder 1115 诺滋多姆
2016-03-19 11:32
309 查看
http://hihocoder.com/problemset/problem/1115
思路来源:/article/9288113.html
看到炉石就打了。。。
爆搜题dfs(int noc,int face,int step,bool D)
noc表示打到诺滋多姆上的伤害,face表示打到脸上的伤害,step表示第几个随从,D表示诺滋多姆还有没有圣盾。
枚举一下先攻击的随从,然后就是舒爽的深搜了。
思路来源:/article/9288113.html
看到炉石就打了。。。
爆搜题dfs(int noc,int face,int step,bool D)
noc表示打到诺滋多姆上的伤害,face表示打到脸上的伤害,step表示第几个随从,D表示诺滋多姆还有没有圣盾。
枚举一下先攻击的随从,然后就是舒爽的深搜了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct node{ int att,hp; bool d,w; }a[10]; int ans,n,num[10]; void dfs(int noc,int face,int step,bool D) { if(step>n) { if(noc>=8) ans=max(ans,face); return ; } int i=num[step]; if(D==true) { if(a[i].w==true) { if(a[i].d||a[i].hp>8) { dfs(noc+a[i].att,face,step+1,false); dfs(noc,face+a[i].att,step+1,false); } } dfs(noc,face,step+1,false); } else { if(a[i].w==true) { dfs(noc,face+a[i].att*2,step+1,false); if(a[i].d||a[i].hp>8) { dfs(noc+a[i].att,face+a[i].att,step+1,false); dfs(noc+a[i].att*2,face,step+1,false); } } dfs(noc+a[i].att,face,step+1,false); dfs(noc,face+a[i].att,step+1,false); } } int main() { while(scanf("%d",&n)!=EOF) { char c; ans=0; for(int i=1;i<=n;i++) { scanf("%d%d",&a[i].att,&a[i].hp); a[i].d=a[i].w=false; while(scanf("%c",&c)!=EOF) { if(c=='\n') break; if(c=='D') a[i].d=true; if(c=='W') a[i].w=true; } } for(int i=1;i<=n;i++) num[i]=i; for(int i=1;i<=n;i++) { swap(num[i],num[1]); dfs(0,0,1,true); } printf("%d\n",ans); } return 0; }
相关文章推荐
- UIBarButtonItem 、UITabBarItem 改变字体,大小,图片
- 更新内容
- C#程序开发中经常遇到的10条实用的代码
- post和get的区别
- Hadoop集群搭建
- 【C++】《C++标准程序库》小结第九章-算法
- Unity3D Shader
- Http头 Range、Content-Range【断点续传】
- centos设置当前系统时间命令
- linux下指定进程运行的CPU
- Jsp与servlet的区别 1
- UVA 11324 The Largest Clique(tarjan有向图强连通+缩点)
- 借开发小工具做工作感悟
- C++项目使用的开源库记录
- Zend Framework+smarty用法实例详解
- C++项目使用的开源库记录
- 第4周-项目1-求最大公约数(2)
- [从头学数学] 第140节 勾股定理
- Android Studio 中使用assets目录读取失败的问题
- MySQL数据库事务隔离级别(Transaction Isolation Level)