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问题相关推荐

  1. 计算机与程序设计语言教案,计算机程序设计(c语言)教案

    计算机程序设计(c语言)教案 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 计算机程序设计(C语言)教案课程名称计算机程序设计总学 ...

  2. 计算机程序设计语言教案,计算机程序设计(C语言)教案.doc

    计算机程序设计(C语言)教案 课程 名称 计算机 程序设计 总学时 80 课题 数据类型.运算符与表达式 第 11~15 学时 课型 必修 教学目标及重点难点 目标:熟练掌握C语言中常见数据类型的表示 ...

  3. c语言是面向对象程序设计,C语言面向对象程序设计.ppt

    C语言面向对象程序设计.ppt 面向对象程序设计 C 程序设计语言主讲 陈泽琳 学时安排 上课学时 24上机学时 16 参考资料 美 H M Deitel等著 薛万鹏等译 C 程序设计教程 郑莉等编著 ...

  4. c语言函数的程序设计,C语言程序设计第3版,第6章函数程序设计.ppt

    C语言程序设计第3版,第6章函数程序设计 C语言程序设计 第6章 函数程序设计 第6章 数组程序设计 6.1 函数概述 6.2 自定义函数示例 6.3 函数定义及调用 6.4 函数嵌套和递归函数 6. ...

  5. c语言围棋对弈程序设计,C语言围棋对弈程序设计.doc

    C语言围棋对弈程序设计 用C语言编写一个围棋对弈棋室的程序,模仿两人对弈的过程,其中包括自动提子功能,和自动点目功能. 1.围棋的一些基本常识: (1)围棋棋子的"气" 见右图1所 ...

  6. c语言围棋对弈程序设计,C语言围棋对弈程序设计(59页)-原创力文档

    C语言围棋对弈程序设计 用C语言编写一个围棋对弈棋室的程序,模仿两人对弈的过程,其中包括自动提子功能,和自动点目功能. 1.围棋的一些基本常识: (1)围棋棋子的"气" 见右图1所 ...

  7. c语言基础循环程序设计,C语言编程新手入门基础——循环详解!

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  8. c语言选择菜单程序设计,c语言课程设计报告-- 使用菜单选择趣味程序.doc

    c语言课程设计报告-- 使用菜单选择趣味程序 青岛农业大学 课程设计报告 题 目: 使用菜单选择趣味程序 姓 名: 杨丽娜 学 院: 理学与信息科学学院 专 业: 通信工程 班 级: 2班 学 号: ...

  9. c语言年历表程序设计,c语言程序设计年历显示-20210413153548.docx-原创力文档

    内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128) 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128) c语言程序设计年历显示 ...

最新文章

  1. 《评人工智能如何走向新阶段》后记(再续2)
  2. phpmyadmin 安装
  3. Linux系统的进程管理
  4. C# WinForm开发系列 - TextBox
  5. component是什么接口_阿里高级技术专家:整洁的应用架构“长”什么样?
  6. centos6.4 搭建JDK环境
  7. 感受来自AI的幸福:可可豆、巧克力与人工智能
  8. Redis常用命令、数据类型讲解
  9. java删除浏览器cookies_清除浏览器cookie
  10. Java华容道小程序设计
  11. python汇率转换
  12. php网站登录界面验证码打不开,php网站无法显示验证码
  13. android bugly qq,Android如何快速集成腾讯Bugly
  14. 算法竞赛入门经典 UVa815 Flooded!
  15. H3C路由器交换机配置sflow
  16. android anr 文件路径,android出现ANR 如何导出anr文件
  17. python人工智能学习需要学什么?
  18. 高分SCI都在用 P for trend,快来看看吧
  19. 生成13位条形码 Ean-13码规则: 第十三位数字是前十二位数字经过计算得到的校验码。
  20. 软件测试的五个目的,你知道几个?

热门文章

  1. Photoshop入门与进阶实例:4.2 封尘的杂志
  2. 京东联合多家企业打造“阳光诚信联盟”,要将失信行为一锅端
  3. Android面试知识点_
  4. 几个步骤让你学会JAVA的适配器模式
  5. 应用软件的日志系统的设计要求
  6. 以太坊 – 使用truffle console访问智能合约
  7. 一款麻将小游戏的准备工作
  8. 在windows上运行skynet
  9. 什么高大填空四个字动人_体型什么什么四字成语填空
  10. xp安全模式下如何修复计算机,电脑怎么进入安全模式,小编教你xp系统进入安全模式的方法...