大家好,我的这个题目是在一次浏览网页的时候偶然看到的题目是英文的,我把它翻译过来。并且自己调试程序,把这道题目做了出来,希望大家指点.
题目:很早以前有个很凶狠的奴隶主,以杀奴隶为乐。他有很多的奴隶,一天,他让37个奴隶围成一圈,编上号码(1~37),第一个奴隶从1开始数,数道5的那个人被杀掉,接下来后面的那个人又从1开始数数到5的那个人也被杀掉……最后剩下一个奴隶,这个奴隶可以活下来不杀,问最后是那个奴隶可以活下来?
#include <stdio.h>
void main ()
{
int a[38][38];
int h,i,j,k=0,m=1; //定义循环时要用的变量
for (h=0;h<38;h++) //二维数组赋 初值
{
for (i=0;i<38;i++)
{
if (h==i)
a[h][i]=h;
else
a[h][i]=0;
}
}
for(m=1;m<37;m++) //循环找出最后剩下的那个数字(奴隶)
{
for (j=1;j<38;j++)
{
i=j;
if (a[j][i]!=0)
{
k++;
if (k%5==0)
a[j][i]=0;
}
}
m++;
}
for (h=1;h<38;h++)
{
i=h;
if (a[h][i]!=0)
printf("%d",a[h][i]); //输出最后的哪个数字,即就是不死的奴隶
}
}
我的运行结果是第一个奴隶不死。