#include <stdio.h>
int main()
{
int a[100];
int n;
int i;
int count;
int j=0;
int index=0;
scanf("%d",&n);
for(i=0;i<n;i++)
a[i]=i+1;
for(i=0,count=1;(n-index)!=1;i=(i+1)%(n-index),count++)
{
if(count%3==0)
{
for(j=i;j<n-index;j++)
a[j]=a[j+1];
count++; //判断是否是3(被3整除)
index++; //index记录淘汰了几个数
}
}
printf("%d\n",a[0]);
return 0;
}
约瑟夫问题(数到3的人出局,判断最后一个人是第几个)
最新推荐文章于 2023-12-24 19:42:54 发布
本文介绍了一个使用C语言解决约瑟夫环问题的程序。该程序首先读取输入参数n,然后创建一个包含从1到n编号的数组。接着通过循环逻辑模拟约瑟夫环的过程,每次循环中计数到3的倍数时就移除当前元素,并调整数组以反映这一变化。最终,当数组中只剩下一个元素时,程序输出这个最后剩余的元素。
&spm=1001.2101.3001.5002&articleId=41855449&d=1&t=3&u=ae01bf1e39da40adb2b1ca422582ee20)
1178

被折叠的 条评论
为什么被折叠?



