c语言josephus问题程序设计,C语言编程Josephus问题
C语言编程Josephus问题
來源:互聯網 2010-05-28 14:19:55 評論
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
問題描述:
Josephus问题是说,一群小孩围成一圈,任意假定一个数m,从第一个小孩起,顺时针方向数,每数到第m个小孩时,该小孩便离开。小孩不断离开,圈子不断缩小。最后,剩下的一个小孩便是胜利者。究竟胜利者是第几个小孩呢?程序要求输入小孩的个数以及数m的值,输出最后获胜的小孩的编号。(用数组实现)
參考答案:
/*这个答案我不是已经给过了吗?
好象被删掉了,再给你发一次吧,补充一下,应作者要求,在这里解释一下代码的意思,我晕死.*/
#include
#include
#define max 1024
void findout(int n,int m)//这函数的作用是找出最后剩下的小孩
{
int buf[max];//max上面有定义,为1024,大小你看实际需要改
int dex=0;
int in=0;
for(int i=1;i<=n;i++)//n是小孩的个数
{
buf[i]=i;//给小孩赋号码,第几个小孩,号码就为几
}
while(n>in+1)//剩下小孩个数大于1的时候才执行
{
for(i=1;i<=n;i++)//遍历所以小孩
{
if(buf[i]!=0)//小孩号码不为0的时候
{
dex++;
if(dex==m)//若是数到m,
{
buf[i]=0;//则把小孩号码改成0
in++;//被排除的小孩个数加1
dex=0;//判断值清0,从新开始找
}
}
}
}//while.退出的时候只剩下一个小孩
for(i=1;i<=n;i++)
if(buf[i]!=0)
printf("最后的小孩号码为:%d\n",buf[i]);//打印小孩的号码
}
void main()//这个函数够简单吧,这个自己看,我累死了
{
int n,m;
char c='y';
printf("#############测试开始了#############\n");
printf("\n");
while(c=='y')
{
printf("请输入小孩的个数:");
scanf("%d",&n);
printf("请输入m的值?:");
scanf("%d",&m);
if((n>0)&&(m>0))
{
findout(n,m);
}
else
{
printf("输入有误\n");
}
printf("继续吗?y or n\n");
getchar();
c=getchar();
}
printf("\n");
printf("#############测试结束了############\n");
}
[b]分类:[/b] 电脑/网络 >> 程序设计 >> 其他编程语言[br][b]问题描述:[/b][br]Josephus问题是说,一群小孩围成一圈,任意假定一个数m,从第一个小孩起,顺时针方向数,每数到第m个小孩时,该小孩便离开。小孩不断离开,圈子不断缩小。最后,剩下的一个小孩便是胜利者。究竟胜利者是第几个小孩呢?程序要求输入小孩的个数以及数m的值,输出最后获胜的小孩的编号。(用数组实现)[br][b]参考答案:[/b][br]/*这个答案我不是已经给过了吗?
好象被删掉了,再给你发一次吧,补充一下,应作者要求,在这里解释一下代码的意思,我晕死.*/
#include
#include
#define max 1024
void findout(int n,int m)//这函数的作用是找出最后剩下的小孩
{
int buf[max];//max上面有定义,为1024,大小你看实际需要改
int dex=0;
int in=0;
for(int i=1;i<=n;i++)//n是小孩的个数
{
buf[i]=i;//给小孩赋号码,第几个小孩,号码就为几
}
while(n>in+1)//剩下小孩个数大于1的时候才执行
{
for(i=1;i<=n;i++)//遍历所以小孩
{
if(buf[i]!=0)//小孩号码不为0的时候
{
dex++;
if(dex==m)//若是数到m,
{
buf[i]=0;//则把小孩号码改成0
in++;//被排除的小孩个数加1
dex=0;//判断值清0,从新开始找
}
}
}
}//while.退出的时候只剩下一个小孩
for(i=1;i<=n;i++)
if(buf[i]!=0)
printf("最后的小孩号码为:%d\n",buf[i]);//打印小孩的号码
}
void main()//这个函数够简单吧,这个自己看,我累死了
{
int n,m;
char c='y';
printf("#############测试开始了#############\n");
printf("\n");
while(c=='y')
{
printf("请输入小孩的个数:");
scanf("%d",&n);
printf("请输入m的值?:");
scanf("%d",&m);
if((n>0)&&(m>0))
{
findout(n,m);
}
else
{
printf("输入有误\n");
}
printf("继续吗?y or n\n");
getchar();
c=getchar();
}
printf("\n");
printf("#############测试结束了############\n");
}
c语言josephus问题程序设计,C语言编程Josephus问题相关推荐
- 计算机与程序设计语言教案,计算机程序设计(c语言)教案
计算机程序设计(c语言)教案 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 计算机程序设计(C语言)教案课程名称计算机程序设计总学 ...
- 计算机程序设计语言教案,计算机程序设计(C语言)教案.doc
计算机程序设计(C语言)教案 课程 名称 计算机 程序设计 总学时 80 课题 数据类型.运算符与表达式 第 11~15 学时 课型 必修 教学目标及重点难点 目标:熟练掌握C语言中常见数据类型的表示 ...
- c语言是面向对象程序设计,C语言面向对象程序设计.ppt
C语言面向对象程序设计.ppt 面向对象程序设计 C 程序设计语言主讲 陈泽琳 学时安排 上课学时 24上机学时 16 参考资料 美 H M Deitel等著 薛万鹏等译 C 程序设计教程 郑莉等编著 ...
- c语言函数的程序设计,C语言程序设计第3版,第6章函数程序设计.ppt
C语言程序设计第3版,第6章函数程序设计 C语言程序设计 第6章 函数程序设计 第6章 数组程序设计 6.1 函数概述 6.2 自定义函数示例 6.3 函数定义及调用 6.4 函数嵌套和递归函数 6. ...
- c语言围棋对弈程序设计,C语言围棋对弈程序设计.doc
C语言围棋对弈程序设计 用C语言编写一个围棋对弈棋室的程序,模仿两人对弈的过程,其中包括自动提子功能,和自动点目功能. 1.围棋的一些基本常识: (1)围棋棋子的"气" 见右图1所 ...
- c语言围棋对弈程序设计,C语言围棋对弈程序设计(59页)-原创力文档
C语言围棋对弈程序设计 用C语言编写一个围棋对弈棋室的程序,模仿两人对弈的过程,其中包括自动提子功能,和自动点目功能. 1.围棋的一些基本常识: (1)围棋棋子的"气" 见右图1所 ...
- c语言基础循环程序设计,C语言编程新手入门基础——循环详解!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- c语言选择菜单程序设计,c语言课程设计报告-- 使用菜单选择趣味程序.doc
c语言课程设计报告-- 使用菜单选择趣味程序 青岛农业大学 课程设计报告 题 目: 使用菜单选择趣味程序 姓 名: 杨丽娜 学 院: 理学与信息科学学院 专 业: 通信工程 班 级: 2班 学 号: ...
- c语言年历表程序设计,c语言程序设计年历显示-20210413153548.docx-原创力文档
内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128) 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128) c语言程序设计年历显示 ...
最新文章
- 《评人工智能如何走向新阶段》后记(再续2)
- phpmyadmin 安装
- Linux系统的进程管理
- C# WinForm开发系列 - TextBox
- component是什么接口_阿里高级技术专家:整洁的应用架构“长”什么样?
- centos6.4 搭建JDK环境
- 感受来自AI的幸福:可可豆、巧克力与人工智能
- Redis常用命令、数据类型讲解
- java删除浏览器cookies_清除浏览器cookie
- Java华容道小程序设计
- python汇率转换
- php网站登录界面验证码打不开,php网站无法显示验证码
- android bugly qq,Android如何快速集成腾讯Bugly
- 算法竞赛入门经典 UVa815 Flooded!
- H3C路由器交换机配置sflow
- android anr 文件路径,android出现ANR 如何导出anr文件
- python人工智能学习需要学什么?
- 高分SCI都在用 P for trend,快来看看吧
- 生成13位条形码 Ean-13码规则: 第十三位数字是前十二位数字经过计算得到的校验码。
- 软件测试的五个目的,你知道几个?
热门文章
- Photoshop入门与进阶实例:4.2 封尘的杂志
- 京东联合多家企业打造“阳光诚信联盟”,要将失信行为一锅端
- Android面试知识点_
- 几个步骤让你学会JAVA的适配器模式
- 应用软件的日志系统的设计要求
- 以太坊 – 使用truffle console访问智能合约
- 一款麻将小游戏的准备工作
- 在windows上运行skynet
- 什么高大填空四个字动人_体型什么什么四字成语填空
- xp安全模式下如何修复计算机,电脑怎么进入安全模式,小编教你xp系统进入安全模式的方法...