| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3666 人关注过本帖, 1 人收藏
标题:求助,关于丢手帕问题
只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:19 
求助,关于丢手帕问题
纠结
看视频教程是老师说有个丢手帕问题:N个孩子围成一圈报数,报到M的退出,剩下的再从1继续报数,,报到M的再退出,一直持续到只剩一个人,问剩下的是哪个。想独立解决这个问题,后来发现自己办不到,就降低难道,改为10的小孩围城一圈,报到4的退出,程序虽然费劲巴拉的写出来了,可总也不对,纠结2天了都没办法求助大家吧,帮看
程序代码:
#include<stdio.h>
main()
{
    int a[10]; /*定义一个有十个元素的数组,存放编号*/
    int i,j,*k,p=1,t=0,m=1; /*i,j用于循环,k为指向数组元素的指针,p用来记录指针移动次数*/
    for(i=0;i<10;i++)       /*t用来记录已经退出的个数,m累计10次后指针回归数组首元素*/
    a[i]=i+1;               /*为数组循环赋值1~10*/


    k=a;           /*指针指向首元素*/
    for(j=1;j<1000;j++)
    {
    if((m-1)%10==0)k=a;  /*m累计10次后指针回指*/
     if(*k==0){k++;m++;} /*若指针指向的元素值为0,指针下移,m累计加1*/
    if(p%4==0)
     {         /*指针有效移动(所指向元素不为0)后,将指针所致元素赋值为0,t累计加1*/
        *k=0;
        t++;
        if(t==9)   /*t累计为9(即已经有9个元素被赋值为0)后,跳出循环*/
        break;
     }

     k++; /*无论以上if语句是否成立,每次循环,k、m、p均累计加1*/
     m++;
     p++;
    }
    for(i=0;i<10;i++)
    {                  /*循环输出数组中值不为0的元素*/
        if(a[i]!=0)
        printf("%d\t",a[i]);
    }
    return 0;
}
各位朋友,我是没办法了,求助啊,帮我看看哪里的问题,感激不尽
搜索更多相关主题的帖子: 手帕 办不到 
2012-11-06 11:10
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
疑惑中,很茫然,
求助

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-06 11:15
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
10个孩子围成一圈,分别编号为1~10,开始报数,从1开始报,1,2,3,4,编号为4孩子报到4,那么他退出,继续从第5个孩子开始报1,2,3,4,编号为8的孩子报到4,它也退出,然后从9好孩子开始继续报,以此类推。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-06 11:24
hejian11
Rank: 2
等 级:论坛游民
帖 子:35
专家分:49
注 册:2012-10-23
收藏
得分:0 
任何基本的算法你就想着怎么用多重循法解释出来,这样的话就很好做出来的!
2012-11-06 11:26
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
从昨天早上开始做这个题,将近2天了,我都快疯了。
诸位啊,为了世界上少个疯子,帮帮我吧,疯子很可怕的。。。。。
疯子挨个拍砖玩

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-06 11:28
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
4楼的兄弟能详细点吗???

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-06 11:29
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
求助

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-06 11:32
hejian11
Rank: 2
等 级:论坛游民
帖 子:35
专家分:49
注 册:2012-10-23
收藏
得分:0 
我以为解决了呢!是想求代码是吧
2012-11-06 11:33
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
我这有答案,它的思路和我不太一样,我也不想看他,我想知道我写的哪里错了。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-06 11:37
古村一凡
Rank: 2
等 级:论坛游民
帖 子:4
专家分:16
注 册:2011-1-16
收藏
得分:0 
我没明白楼主的意思,我是这样来理解你的意思的,请指教:
如果现在有十个人对应下面的编号:
1 2 3 4 5 6 7 8 9 10
如果报到号码为4的人出列,则最终剩下的是这些编号的人。
1 2 3   5 6 7   9  10

不知道楼主说的“剩下的最后一个人”是什么意思?
难道是在“1 2 3   5 6 7   9  10”结束后,再从头开始报数吗?
1 2 3  5 6 7 9  10
1 2 3    6 7 9
再一次
1 2 3  6 7 9
1 2 3   7 9
再一次
1 2 3 7 9
1 2 3   9
再一次
1 2 3 9
1 2 3   
剩下的是编号为1 2 3 三个人。

楼主,是这个意思吗?
2012-11-06 11:57
快速回复:求助,关于丢手帕问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017166 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved