dream_illusion 2021-03-10 22:45 采纳率: 100%
浏览 50
已采纳

洗牌问题,答案最后的for和while看都看不懂~~

 

  • 写回答

4条回答 默认 最新

  • qq_25376897 2021-03-11 10:04
    关注

    其实加个打印就知道了。

    while (s!=1);   反过来想,也就是s为1的时候结束,那if(b[i]>b[i+1])这个判断必须只能满足一次。

    if(b[i]>b[i+1]) 翻译过来就是 前一个大于后一个,我们知道,原来的牌组是单调递增的,如果最后洗成原来一样,前面都是小于后面的,怎么出现大于的情况呢?

    注意最后一个for循环 i的取值范围,i<2n,所以最后一次的b[i+1]其实就是b[2n],而数组的下标是从0开始的,所以这里的b[2n]其实就是牌组之外的数据,也就是一开始的0,那么最后一张牌就可以大于后一个,就是我们要找的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?