0?1442652658

董国超 (Student)

dongguochao

湘潭大学

Ta在确实 over 4 years

  • 辽宁-本溪
  • 2014-12-04开始使用
  • 1223次访问(自2016年5月)
Ta的动态
0?1442652658
发布时间:12/07/2016 00:55
更新时间:12/07/2016 23:10

     救济金的问题抽象出来就是几个人围成一个圈坐,给每一个人编号,一个人从1开始,一个人从n开始,从一开始的点到k时,出列一人,n逆时针点人,点到m出列一人。如果我们出列用删除操作,则大大的降低了效率,我们将删除掉的人用0来代替,当我们遇到0时不点人。

    使用两个方法来分别逆时针顺时针点人,如果是0,则跳过,每一次点相应的人数,这就涉及到我们点到第某人时,某一是0的情况,所以每一次我们点完人,(即某一次点人算数)都要去判断这一次的点人是否有效,也就是是不是点到了正确的人,如果第某次点人,点到的是0,即无效,要向下过滤至有效的一个人。

    转圈,因为一堆人是围着圈坐的,所以当偶们点到最后一个人n时,我们要从新从第一个人开始点名,其中每一次点名都要判断是否我们到达最后一人,同是对于逆时针点人的我们每一次都要判断是否到达队的首端。

 然后做输出。

  在这次的练习中仍然存在的不足有:

   对于vim的分屏操作不熟练,有待加强,对于调试的s,n到底该一次执行一条指令还是多条指令不清楚。调试效率低。

经验:

对于数数的操作:while(n--)执行的循环次数是n次;

                            当p指向的是当前的位置m时,数k个人后,当前的位置应该是k+m;也就是执行k次循环。

                             当我们点人时从1开始点人的话,点到k人应该是0+k;

                            对于数组的使用我们在实操时往往会选择比题目预设大1;

     今天看了刘老师的解法,可以使用一个方法来实现,我们数数时,在起始位置时,由于是一个圆圈,我们可以设置从一数的时候从最后一个位置起始,从最后位置数数的从起始位置起。


                     

( 1.51 KB) 董国超, 12/07/2016 00:55
回复 ︿
0?1442652658
发帖时间:10/10/2016 12:37
更新时间:10/12/2016 14:33
老师,能不能在传点关于汇编的知识?我们也可以提前学一学
回复 ︿ (1)
  • 用户头像
    刘芳 2年前
    好,我整理了上传

0?1470885445
登录后可添加回复
问题和建议
还能输入50个字符 Submit

加入QQ群

关注微信APP


×