算法提高 林丹大战李宗伟

* 模拟 条件判断*

问题描述   我们用0表示林丹,1表示李宗伟。

  输入数据中每行会给出一个0或者1,表示对应选手得1分。

  当一方得分达到21分时,只要该方与对方分差超过1分,该方即胜出。

  你需要输出最后获胜选手的代号。 输入格式   若干行每行一个0或者1。 输出格式   一行一个0或者1表示胜者。 样例输入 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 样例输出 1 数据规模和约定
  输入数据可能存在多余信息,选手需要在第一次出现胜者时马上输出。   读入可以使用while (cin >>
x){},该代码块会在读入所有数据后执行完毕

import java.util.Scanner;

public class 林丹羽毛球 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int sum0=0,sum1=0;
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        while(in.hasNextLine()){
            if(n==0)
                sum0++;
            else sum1++;
            if(sum0>=21&&sum0-sum1>1){
                System.out.println("0");
                return;
            }
            if(sum1>=21&&sum1-sum0>1){
                System.out.println("1");
                return;
            }
            n=in.nextInt();//这个不加是错的why?存储当前输入,以上部分是判断上行输入
        }

    }

}

错因分析:判断条件易出错,要懂得他们两人得分数差值需达到一分以上,而不是一分。而此时sum0>=21或者sum1>=21

            if(sum0>=21&&sum0-sum1>1){
                System.out.println("0");
                return;
            }
            if(sum1>=21&&sum1-sum0>1){
                System.out.println("1");
                return;
            }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值