文章

34

粉丝

179

获赞

13

访问

199.1k

头像
浙江工商大学problem 13
备考心情
发布于2022年2月25日 13:45
阅读数 5.2k

int main(){
    int h,a,b,k;
    int hp1; //白龙攻击后的血量
    int i=1;
    while(scanf("%d %d %d %d",&h,&a,&b,&k)!=EOF){
       // int i=1;
        int flag=0;
        while(k--){
            hp1=h-a;
            if(hp1<1){
                flag=1;   //白龙胜利
                break;
            }
            h=hp1+b;  //一回合后黑龙的血量
            }
            if(flag==0)
                printf("Case #%d: Unknow\n",i);
            else
                printf("Case #%d: White win\n",i);
            i++;
        }
    return 0;
}

注意事项,这题算自己独自编写出来,就是在理解题意的时候花了较多时间。

在 k 次连续的回合进攻后,白龙必须休息一个回合,以储备体力。然而,白龙可以选择在任意的回合休息。(这句对于题目没啥用,但在刚开始的时候误导了自己,还是带入样例数据后发现的)

思路就是白龙攻击黑龙,此时hp的值要减少,只要保证每回合黑龙回血前hp还是大于等于1,那么就可以继续下一个回合,否则结束,白龙获得胜利。

用上break,减少循环,提高效率。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发