hihocoder 1115 诺滋多姆
来源:互联网 发布:adsafe mac 编辑:程序博客网 时间:2024/04/29 08:50
http://hihocoder.com/problemset/problem/1115
思路来源:http://blog.csdn.net/zhousilijames/article/details/49620019
看到炉石就打了。。。
爆搜题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;}
0 0
- hihocoder 1115 诺滋多姆
- hihocoder:
- hihoCoder
- Hihocoder
- hihocoder
- hihocoder
- hihocoder
- hihocoder
- hihocoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- HihoCoder
- hihoCoder
- HihoCoder
- HihoCoder
- linux下指定进程运行的CPU
- UIBarButtonItem 、UITabBarItem 改变字体,大小,图片
- Hadoop集群搭建
- HDU 3394Railway( tarjan)
- C#程序开发中经常遇到的10条实用的代码
- hihocoder 1115 诺滋多姆
- 蓝桥杯 城市建设 (最小生成树)卡鲁斯卡尔
- 性能测试
- Cocos2d-x 3.x开发中Visual Studio下libcurl库配置
- spring mvc4:异常处理
- java常见的排序算法
- Android Fragment 笔记
- Atom中文显示乱码问题--------------续
- Unity3d 着色器语法(Shader)