(找水王)编程思维训练

一、设计思路:

  每次删除两个不同的ID(不管是否包含水王ID),那么,在剩下的ID列表中,水王

ID出现的次数仍然超过总数的一半。

  所以即每次删除两个不同的ID,最后剩下的ID就是水王ID

二、代码实现:

package 水王是谁;

public class Shuiwangshishei {

    public static int jishu(int p[], int n)
    {      
        int a=0,b=0;
        for(int i=0; i<n; ++i)
        {          
            if(a==0 || b==0)
            {              
                a=p[i];
                b++;
            }
            else if(p[i]==a) b++;
            else b--;     
        }      
        return a;//此a即为“水王”的ID }
    }
    public static void main(String args[])
    {
        //以13个数代表13个帖子,每个数字代表分别的发帖人
        int a[]={1,3,3,4,3,5,2,2,3,7,3,3,3};
        int n=a.length;
        int shuiwangID=jishu(a,n);
        System.out.println("水王是"+shuiwangID);
    }
}

 

三、实验截图:

 

四、个人总结

  本题的重点是将大问题转化成小问题,即把问题缩小化,在参考了网络资料后豁然开朗。思维还有待锻炼。

转载于:https://www.cnblogs.com/hehejeson/articles/5499424.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值