资讯详情

n种技能杀怪实例分析

2017-05-11 阅读:207 来源:福州博洋软件开发与测试培训学校
进入>

博洋教育今日就业明星:李祖张就职福建福诺移动通信技术担任java工程师

独家揭秘明星背后鲜为人知的故事:福建工程学院计算机科学与技术专业,本科学历。在博洋教育参加JAVA软件项目实训,该生学习态度端正,有比较好的学习心态,会主动请教老师同学。毕业后经过就业部老师的推荐,现在成功入职福建福诺移动通信技术有限公司。

博洋教育热线:

QQ:

联系人:廖老师

地址:福州市鼓楼区铜盘路软件园软件管委会大楼3楼网址:

题意:

有n种技能,每种技能只能用一次,怪物有m点血,问最少需要多少种技能可以把怪物杀死。

每种技能有两个数值a和b,a表示攻击力,b表示当怪物的血量小于等于b时,这种技能的攻击力可以变为2a.

一点攻击力可以杀掉怪物一点血。

简单深搜

加了一个剪枝后从421MS瞬间降到93MS

code:

#include

#include

structnode{

intM,spell;

}a[11];

inthp,n;

intvis[11];

intans;

voiddfs(intk,intHP){

inti;

if(k>=ans)return;

if(HP<=0){

if(ans>k)

ans=k;

return;

}

for(i=1;i<=n;i++)

if(!vis[i]){

vis[i]=1;

HP<=a[i].M?dfs(k+1,HP-a[i].spell*2):dfs(k+1,HP-a[i].spell);

vis[i]=0;

}

}

intmain(){

inti;

while(~scanf("%d%d",&n,&hp)){

for(i=1;i<=n;i++)

scanf("%d%d",&a[i].spell,&a[i].M);

ans=12;

memset(vis,0,sizeof(vis));

dfs(0,hp);

if(ans!=12)printf("%d\n",ans);

elseprintf("-1\n");

}

return0;

}

#include

#include

structnode{

intM,spell;

}a[11];

inthp,n;

intvis[11];

intans;

voiddfs(intk,intHP){

inti;

if(k>=ans)return;

if(HP<=0){

if(ans>k)

ans=k;

return;

}

for(i=1;i<=n;i++)

if(!vis[i]){

vis[i]=1;

HP<=a[i].M?dfs(k+1,HP-a[i].spell*2):dfs(k+1,HP-a[i].spell);

vis[i]=0;

}

}

intmain(){

inti;

while(~scanf("%d%d",&n,&hp)){

for(i=1;i<=n;i++)

scanf("%d%d",&a[i].spell,&a[i].M);

ans=12;

memset(vis,0,sizeof(vis));

dfs(0,hp);

if(ans!=12)printf("%d\n",ans);

elseprintf("-1\n");

}

return0;

}

加载全文

免责声明:本站部分内容、图片来自用户自主上传,如果您对本站信息资源版权的归属问题存有异议,请您致信,我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。

以上是福州博洋软件开发与测试培训学校为大家整理的有关n种技能杀怪实例分析的全部内容,更多精彩请访问学习资讯新闻专栏。

相关课程

更多>
2020猎学网广告栏
申请课程免费试听名额

课程顾问24小时内联系您

你好

顾问将于24小时内联系您!

确定
在线咨询 微信咨询 立即报名
申请1对1课程顾问咨询服务
×
你好

顾问将于24小时内联系您!

确定
福州猎学网 >福州博洋软件开发与测试培训学校 >n种技能杀怪实例分析