兄弟姐妹们帮帮忙吧
将班里的n个人围成一圈,顺序编号,从第一个人开始报数(从1-3报数),凡报到3的人退出圈子,然后从下一个人重新开始,最后留下的那个人被选为班长。请问按这个规则,选出的班长是原来编号为几号的那位。
2010-04-15 19:53
2010-04-15 20: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;
}
}
}代码没有调试。在记事本中写的。自己调试一下

2010-04-15 22:07
2010-04-16 12:49
程序代码: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;
}
}
}这是经过测试了的正确

2010-04-16 13:22