请教一个关于数组应用Josephus的问题
1个回答
展开全部
在这里我们就假设n=41,m=3嘛!
那么程序就可以这样写:
#include<stdio.h>
#include<conio.h>
int main()
{
int arr[41],i,count=0,sum=0;//定义一个数组arr[41];count用来记录报数的编号;sum用来记录已经被杀的总人数
for(i=0;i<41;i++)
{
arr[i]=i+1;//给在场的41个人进行编号
printf("%-4d",arr[i]);//输出这41个人的编号
}
while((41-sum)/3!=0)//当还存活得人还剩下两个时就停止
{
for(i=0;i<41;i++)
{
if(arr[i]!=0)
{
count++;
if(count==3)
{
arr[i]=0;//把已自杀的人的编号设为0
count=0;
sum++;
}
}
}
i=0;//将i清零,以便进行下一次的循环
}
printf("\n请输出幸存者的编号:");
for(i=0;i<41;i++)
{
if(arr[i]!=0)
printf("%-3d",arr[i]);
}
getch();
return 0;
}
那么程序就可以这样写:
#include<stdio.h>
#include<conio.h>
int main()
{
int arr[41],i,count=0,sum=0;//定义一个数组arr[41];count用来记录报数的编号;sum用来记录已经被杀的总人数
for(i=0;i<41;i++)
{
arr[i]=i+1;//给在场的41个人进行编号
printf("%-4d",arr[i]);//输出这41个人的编号
}
while((41-sum)/3!=0)//当还存活得人还剩下两个时就停止
{
for(i=0;i<41;i++)
{
if(arr[i]!=0)
{
count++;
if(count==3)
{
arr[i]=0;//把已自杀的人的编号设为0
count=0;
sum++;
}
}
}
i=0;//将i清零,以便进行下一次的循环
}
printf("\n请输出幸存者的编号:");
for(i=0;i<41;i++)
{
if(arr[i]!=0)
printf("%-3d",arr[i]);
}
getch();
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询