| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:兄弟姐妹们帮帮忙吧
只看楼主 加入收藏
luochengwww
Rank: 2
等 级:论坛游民
帖 子:40
专家分:48
注 册:2010-3-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
兄弟姐妹们帮帮忙吧
将班里的n个人围成一圈,顺序编号,从第一个人开始报数(从1-3报数),凡报到3的人退出圈子,然后从下一个人重新开始,最后留下的那个人被选为班长。请问按这个规则,选出的班长是原来编号为几号的那位。
搜索更多相关主题的帖子: 兄弟 姐妹 
2010-04-15 19:53
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:10 
定义一个bool类型的数组,长度为 n

初始化数组 = true;

利用循环,当 i % 3 == 0 , 判断数组[i] == true , 如何等于true , 则数组[i] = false;

依此类推。

剩最后一个时,得出它的下标
2010-04-15 20:10
ouxianzhi520
Rank: 8Rank: 8
来 自:重庆
等 级:蝙蝠侠
威 望:3
帖 子:245
专家分:932
注 册:2007-12-1
收藏
得分:10 
程序代码:
bool[] a = new bool[n];
for(int i= 0 ;i<a.Length;i++)
{
   a[i] = true;
}

int j = 0;
int find= 0;    //排除的个数

while (true)
{

 for(int i =0 ;i<a.Length;i++)
   {
     if(a[i]==true)
     {
    j++;
    if(j %3 == 0)
    {
       a[i]=false;
       find ++;
    }   
      }
      if(find ==n-1)    //如果排除了N-1个,就只剩一个班长了
    { Console.WrilteLine("班长是第{0}个同学",i);
      break;
    }
    }   
}
代码没有调试。在记事本中写的。自己调试一下

[url=http://blog./ouxianzhi520]csdn个人博客[/url]
2010-04-15 22:07
luochengwww
Rank: 2
等 级:论坛游民
帖 子:40
专家分:48
注 册:2010-3-31
收藏
得分:0 
谢谢了
2010-04-16 12:49
ouxianzhi520
Rank: 8Rank: 8
来 自:重庆
等 级:蝙蝠侠
威 望:3
帖 子:245
专家分:932
注 册:2007-12-1
收藏
得分:0 
程序代码:
static int n = 40;
        static void Main(string[] args)
        {
           
            bool[] a = new bool[n];
            for (int i = 0; i < a.Length; i++)
            {
                a[i] = true;
            }

            int j = 0;
            int find = 0;    //排除的个数

            while (find != n-1 )
            {
                for (int i = 0; i < a.Length; i++)
                {
                    if (a[i] == true)
                    {
                        j++;
                        if (j % 3 == 0)
                        {
                            a[i] = false;
                            find++;
                        }
                    }              
                   
                }
                if (find == n - 1)    //如果排除了N-1个,就只剩一个班长了
                {
                    for(int i =0;i<a.Length;i++)
                        if (a[i]== true  )
                        {
                            Console.WriteLine("班长是第{0}个同学", i+1);
                            break;
                        }
                }
            }
这是经过测试了的正确

[url=http://blog./ouxianzhi520]csdn个人博客[/url]
2010-04-16 13:22
快速回复:兄弟姐妹们帮帮忙吧
数据加载中...
 
   



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

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