华为4月13号京津地区笔试最后一题怎么写(打boss)

求大神指导
#华为#
全部评论
if(mp%10>=2&&bosshp>mp/10*60+51)就先把mp用完,否则用完一开始送的蓝就平砍到boss死。然后在判断boss剩余血是否大于等于120是就攒5个回合能量射两次。这样应该就能求出来了。如果有错误一定要告诉我!!!。。。
点赞 回复 分享
发布于 2016-04-15 15:11
用的贪心,只过了50%的数据
点赞 回复 分享
发布于 2016-04-15 09:56
import java.util.Scanner; /* 某游戏中,玩家的任务是杀死终极BOSS。BOSS和玩家战斗方式  * 为回合制,玩家先发动攻击。  BOSS的攻击方式为:普通攻击  * 和暴击。每4回合普通攻击的下一回合的攻击为暴击。BOSS普通  * 攻击为10HP。暴击时代攻击为30HP。玩家的攻击方式是普通攻击  * 和魔法攻击。玩家的普通攻击为17HP,魔法攻击为60HP,使用  * 魔法攻击时需要消耗10点魔法。  * 魔法的来源有两种:初始魔法和回合内选择魔法恢复。魔法恢复  * 速度为4点每回合,魔法恢复内无法发动攻击  *  * 已经玩家的HP 和初始魔法量  * BOSS的HP,编写程序,求玩家战胜BOSS 的最小回合数  *  * 100 30   100  * 2  *  * */ public class Main {  /**   * @param args   */  public static int playerAttack_Nonmel=17;  public static int playerAttack_Megic=60;  public static int playerMegic_use=10;  public static int playerMegic_get=4;  public static int bossAttack_Nonmel=10;  public static int bossAttack_big=3*bossAttack_Nonmel;    public static int mark=0;  public static int round=1000000;  public static void main(String[] args) {   // TODO Auto-generated method stub   Scanner scan =new Scanner(System.in);      int playerHP =scan.nextInt();   int playerDP =scan.nextInt();   int bossHP=scan.nextInt();   int bossAttack_time=1;   int attack_round=0;   attack(playerHP,playerDP,bossHP,bossAttack_time,attack_round);      if(round==1000000){    System.out.println(-1);   }else{    System.out.println(round);   }     }      public static void attack(int playerHP,int playerDP,int bossHP,int bossAttack_time,int attack_round){   if(playerHP<=0){    mark=-1;    return;   }   if(bossHP<=0){    return;   }         if(playerDP>=playerMegic_use){    int playerHPTmp=playerHP;    int playerDPTmp=playerDP;    int bossHPTmp=bossHP;    int bossAttack_timeTmp=bossAttack_time;    int attack_roundTmp =attack_round;        playerDPTmp -=playerMegic_use;    bossHPTmp-=playerAttack_Megic;    attack_roundTmp++;    if(bossHPTmp<=0){     if(attack_roundTmp<round) round=attack_roundTmp;     return;    }        if(bossAttack_timeTmp%5 !=0){     playerHPTmp-=bossAttack_Nonmel;    }else{     playerHPTmp-=bossAttack_big;    }    bossAttack_timeTmp++;    if(playerHPTmp<=0){     mark=-1;     return;    }    attack(playerHPTmp,playerDPTmp,bossHPTmp,bossAttack_timeTmp,attack_roundTmp);   }      else if(playerDP<playerMegic_use){    {     int playerHPTmp=playerHP;     int playerDPTmp=playerDP;     int bossHPTmp=bossHP;     int bossAttack_timeTmp=bossAttack_time;     int attack_roundTmp =attack_round;     bossHPTmp-=playerAttack_Nonmel;     attack_roundTmp++;     if(bossHPTmp<=0){      if(attack_roundTmp<round) round=attack_roundTmp;      return;     }     if(bossAttack_timeTmp%5 !=0){      playerHPTmp-=bossAttack_Nonmel;     }else{      playerHPTmp-=bossAttack_big;     }     bossAttack_timeTmp++;     if(playerHPTmp<=0){      mark=-1;      return;     }     attack(playerHPTmp,playerDPTmp,bossHPTmp,bossAttack_timeTmp,attack_roundTmp);         }            {     int playerHPTmp=playerHP;     int playerDPTmp=playerDP;     int bossHPTmp=bossHP;     int bossAttack_timeTmp=bossAttack_time;     int attack_roundTmp =attack_round;     playerDPTmp+=playerMegic_get;     if(bossAttack_timeTmp%5 !=0){      playerHPTmp-=bossAttack_Nonmel;     }else{      playerHPTmp-=bossAttack_big;     }     bossAttack_timeTmp++;     if(playerHPTmp<=0){      mark=-1;      return;     }     attack(playerHPTmp,playerDPTmp,bossHPTmp,bossAttack_timeTmp,attack_roundTmp);    }   }  }     }
点赞 回复 分享
发布于 2016-04-15 11:15
贪心也可以对哦
点赞 回复 分享
发布于 2016-04-15 09:15
dp
点赞 回复 分享
发布于 2016-04-14 23:35
觉得这应该是深度搜索问题
点赞 回复 分享
发布于 2016-04-14 23:06
晚上十点后晒答案
点赞 回复 分享
发布于 2016-04-14 14:56
窝草 一样被卡在此题了
点赞 回复 分享
发布于 2016-04-14 14:54

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务