tywofxd


私信TA

用户名:tywofxd

访问量:174

签 名:

排  名 580
经  验 989
参赛次数 0
文章发表 16
年  龄 0
在职情况
学  校 西安电子科技大学
专  业

  自我简介:

解题思路:

利用贪心的思想,每一步有两种选择,把这两种选择的结果都算出来,选最优的选择,每一步都选最优的选择
(我是参考Newguy_同学的思路,不过用c实现

注意事项:

参考代码:

#include<stdio.h>

//贪心思想,每走一步,都有两种选择,flash或者跑,每次都选择可以逃得更远的那种 

int main()

{

int M,S,t,i=0;

int flash=0,sum=0;//flash记录可以如果某一步选“闪”,能逃多远;sum先记录如果自己跑,能逃多远,然后和flash比较,最后取能逃得更远的那个数 

scanf("%d%d%d",&M,&S,&t);

for(i=1;i<=t;i++)//将闪移和跑步分卡考虑,优先考虑闪移(因为魔法够的话,显然“闪”比较快) 

{

if(M>=10)//魔法点数大于10,就“闪” 

{

flash=flash+60;

M=M-10;

}

else//否则休息,加魔法点 

M=M+4;

sum=sum+17;//如果这一步选自己跑,能跑多远 

if(sum<flash)//最终sum存储这一步的最优选择 

sum=flash;

if(sum>=S)

{

printf("Yes\n%d",i);

break;

}

}

if(i>t)

{

printf("No\n");

printf("%d\n",sum);

}

return 0;

}


  评论区