ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

约瑟夫环问题,简单代码

2019-08-25 18:40:13  阅读:128  来源: 互联网

标签:验证 int 代码 约瑟夫 while 数组 简单 scanf


今天看到了约瑟夫环问题,很是有兴趣,自己准备写了一下,写了10分钟,发现很麻烦,然后我就去网上搜一下,结果看他们的什么链表啊,什么公式啊,之类的,表示很不耐烦,一个很简单的问题,结果给写了好多页代码,我就是表示不服了,我就自己琢磨了二十多分钟,然后给弄出来了,验证也验证了,分享出来,大家帮忙看下,指点一下。
#include<stdio.h>
int main(int argc, const char *argv[])
{
int M,N,Z;
while(1)
{
scanf("%d",&M); //有多少人
scanf("%d",&N); //数多少人
scanf("%d",&Z); //从第几个开始数
int a[M];
int i = Z-2,j;
int r = M;
for(;M>0;M–)
a[M-1] = M; //把个人编号存入数组中,然后循环操作数组
M = r;
while(1)
{
if(M == 1)
break;
i = (i+N)%M; //找到第一个人在数组中的位置
for(j = i;j<M-1;j++) //删除这个人,把其余前移
{
a[j] = a[j+1];
}
M–;
i–;
}
printf("%d\n",a[0]); //输出最后一个
}
return 0;
}

标签:验证,int,代码,约瑟夫,while,数组,简单,scanf
来源: https://blog.csdn.net/qq_43393885/article/details/100066036

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有