c++ 点名问题

有N个人围成一个环,编号从1到n,从第一个人开始报数,报到M的人退出环,当某个人退出圆圈后,报数的工作要从下一个人开始继续,剩下的人仍然是围成一个圆圈的,继续从1报数,报到M,该人出列,再从下一个人为1报数。。。
要求输入为n,m,输出为退出环的那个人的编号序列。比如:n=4,m=1,输出1,2,3,4。又如:n=4,m=2,输出2,4,3,1。n=10,m=3,输出3,6,9,2,7,1,8,5,10,4。
要求用链表解决。而且是用c++的类来实现链表。函数尽量定义为类的方法。
程序代码,谢了!

这是典型的约瑟夫环的问题

#include <stdio.h>
int main(void)
{
int n,m, i, s=0;

printf("输入n,m:");
scanf("%d%d",&n,&m)
for (i=2; i<=n; i++)
s=(s+m)%i;
printf ("最后留下的是原来第%d号\n", s+1);
}

如果楼主不求最后剩下的那个,而是求依次退出的编号顺序
那么,也只能用链表来解决了

参考资料:http://zhidao.baidu.com/question/57253700.html

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-07-23
你直说了描述问题,你先知道什么啊?代码么?

c++ 点名问题
这是典型的约瑟夫环的问题 include <stdio.h> int main(void){ int n,m, i, s=0;printf("输入n,m:");scanf("%d%d",&n,&m)for (i=2; i<=n; i++)s=(s+m)%i;printf ("最后留下的是原来第%d号\\n", s+1);} 如果楼主不求最后剩下的那个,而是求依次退出的编号顺序 那么...

求C++的随机点名程序。。。要有随机点名和顺序点名
1、使用UrlDownLoadToFile这个API下载指定url的学生名单(#include<urlmon.h> #pragma comment(lib, "urlmon.lib"))2、使用fopen读取学生名单到一个char*的缓冲区, 使用stl string来处理这段缓冲区, 并使用stl vector<SStudentInfo*> 存储学生信息 struct SStudentInfo { };vector<SStudentInfo*> ...

C++随机点名程序
\/\/当文件流为eof状态时需先clear再seek include <iostream> include <string> include <fstream> include <ctime> using namespace std;class Class;class Student{ string Name;\/\/学生姓名 string ID;\/\/学生学号 string Number;\/\/学生序号 public:string GetName();string GetNumber();string GetID(...

C++计算机题目(点牛)
int size);void add(int *num, int n, int &size);int main(){ int num[60] = {0}; \/\/10的50次方,开60位够用了; char str_num[60] = {0}; std::cin.getline(str_num, 60); int str

C语言:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报...
void main(){ int a[N]={0},i=0,out_n=0,call_n=0,*p;p=a;while(1){\/\/循环报数 if(*p==0){\/\/如果健在 if(out_n==(N-1))break;\/\/如果仅剩一人 call_n++;\/\/报数 call_n%=3;\/\/最大为3,到了3就从0开始 if(call_n==0){*p=1;out_n++;}\/\/为0(即3)出局 } p++...

c++ int型函数 怎么声明
在C++中,函数原型就是函数的声明。所以,函数原型除了向用户说明如何使用一个函数以外,还告诉电脑存在这样一个可以使用的函数。我们已经介绍了函数原型的结构,只不过“产生结果类型”这个名称是为了方便理解而起的。它应该称为“返回值类型”,用任意一种数据类型来表示,比如int或者char等等,当然还包括...

C++基础的东西看的差不多了,想接着学GUI编程,看哪方面的书比较好呢...
因为开发效率原因,现在的图形界面的开发早就首选C#了。所以私下认为MFC前途不是很好。而且因为这个图形库相对于C++来说的风格过分怪异(基本上颠覆了你之前对C++的认知),所以对于今后的学习的帮助与付出的比例也不高。。。但是有一个问题,不知道楼主是否还是在校学校,有的课程设计点名会要求用MFC。。。

c语言和C++有什么不同啊! 那个对以后的学习更有用呢?。我想一直考计算机...
c++和c只有输入输出语句不同,c++包涵c的所有内容。c++更难一点,一是内容多,二是面对对象的思想对初学者有些难理解(c++是面向对象的,c是面向过程的),想循序渐进的话先学C再学C++,当然直接学C++也是没问题的(你可以先去书店找一本C一本C++,对照下C++比C多了哪些内容,学的时候心里就有底了)。综上,c++更有...

人为什么要求别人或者是鼓励别人进步,而不是想的自己先去成长?_百度知 ...
而对于别人的鼓励是因为想帮助别人,但是不能设身处地想到这有多难。我注意你说的先后问题,其实是没有先后的,所以你也许想问,如果自己没做到成长,也没资格要求别人成长。要求进步是对的,但是要互相理解(。ì _ í。)鼓励的作文,要是别人或家人鼓励自己的 从我转到成贤街小学...

中国学生为什么学不好计算机!
考虑到计算机教材的好坏将与一代人的计算机水平息息相关,这其中的问题已到了非解决不可的地位了。影响计算机教育的三重危机在谭浩强教授看来,引起这些危机的原因主要有以下三个因素。因素之一是相关教育机构把学校开设多少门双语教学的课程、采用多少原版教材当作考核指标,出版方为迎合这一需求,大量引进原版教材。谭浩强...

相似回答
大家正在搜