请教C++约瑟夫问题代码

作者&投稿:侨玛 (若有异议请与网页底部的电邮联系)
~ #include
<iostream.h>
#include<malloc.h>
#include<string.h>
struct
person//定义结构体变量person
{
int
num;//编号
struct
person
*next;//指向自身类型的指针
};
int
main()
{
int
i;
int
m,n;
struct
person
*p1,*p2,*head;
cout<<"请输入总人数n:";
cin>>n;
while(n<1){
cout<<"Input
error!Enter
again:"<<endl;
cin>>n;
}
cout<<"请输入报数m值:";
cin>>m;
p1=(struct
person*)malloc(sizeof(struct
person));//申请首元结点空间
head=p1;
//用head保留链表首元结点地址
p1->num=1;
p2=p1;
for(i=2;i<=n;)
{
p1=(struct
person*)malloc(sizeof(struct
person));//申请新结点空间
p1->num=i;
p2->next=p1;//新结点插入链表尾部
p2=p1;
i++;
}
p1->next=head;//尾结点的next指向首元结点,形成单循环链表
cout<<"\n\n*****************************\n";
cout<<"出队顺序为:\n";
p1=head;//从首元结点开始访问链表
int
winner;
while(n>=1)//链表不为空
{
for(i=1;i<m;i++)
{
p2=p1;
p1=p1->next;
}
cout<<p1->num<<"
";//喊到m的人出列
winner
=
p1->num;
p2->next=p1->next;//链表不断链
free(p1);//释放已删除结点空间
p1=p2->next;
n=n-1;
}
cout<<"\n\n*****************************\n";
cout<<"得胜者是:"<<winner<<endl<<endl;
return
0;
}


顺序表解约瑟夫
用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(最好用单链表实现)这是一个约瑟夫环的问题,代码如下

5.约瑟夫环问题:任意给正整数n,k,按下述方法可得到排列1,2,...,n...
\/\/约瑟夫问题 include"stdio.h"include"stdlib.h"define ok 1 define error 0 define overflow -2 typedef int status;typedef int elemtype;typedef struct lnode{ elemtype data;struct lnode *next;}lnode,*linklist;status createlist_l(linklist&l,int n){ linklist q,p;int i;l=(link...

华南农业大学新生c语言竞赛题--约瑟夫环问题
\/ File:Josephus.cpp Author:YangWudi Version 1.3b --- 这个程序主要用双向循环链表来实现约瑟夫问题 。\/ include <iostream> include <cstdio> using namespace std;typedef int ElementType;struct Node;typedef struct Node *PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;struct Nod...

急求解决约瑟夫问题!
直接模拟就可以了。include<iostream.h> include<string.h> \/\/结构链表定义 typedef struct List { bool IsOn;\/\/状态:ture未离开 int num;\/\/编号 int psw;\/\/密码 List*pnext;}*PList;\/\/函数执行结果状态定义 enum Status{ERROR_OK=0,ERROR_MEMORY_FALIED,ERROR_INPUT_NUM,ERROR_NOPERSON,ERROR_...

约瑟夫问题求解
约瑟夫问题 这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。...

求c语言用循环链表编写约瑟夫环代码(速度求解)!!!
类似差不多的 include "stdio.h"include "stdlib.h"define S sizeof(struct node)struct node { int num;struct node *next;};typedef struct node NODE;NODE *createlinklist(int n){ NODE *head,*p,*q;int i=1;head=p=(struct node*)malloc(sizeof(struct node));p->num=i;for(i=...

约瑟夫问题的两种解法
【约瑟夫问题】编号为1,2,...,n的n个人按照顺时针方向围坐一圈。从第一个人开始顺时针方向自1开始报数,报到m时停止报数。报m 的人出列,从他在顺时针方向的下一个人开始重新报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。其中n,m由键盘输入。【思路1】利用数组存放n...

约瑟夫环C语言急救!!!
\/\/--- include<stdio.h> include<stdlib.h> typedef struct LNode{ int number;int data;struct LNode *next;}LNode,*LinkList;LinkList end;void CreateList_L(LinkList &L,int n);int main(){ int n,m,i,j;LinkList p,q,r,L; \/\/LinkList p,q; LNode *p,*q;printf("...

一道面试智力题,跪求答案
通俗讲解:智取奖品问题:许多人围成一个圈报数,报到一个特定的数的人退出,一支循环下去。约瑟夫就是猴子选大王,猴子报数,最后选出大王。求解约瑟夫问题递归算法(c语言版)(1)建立具有几个结点的单循环链表,其数据域值为生成结点时的顺序号。(2)用计数扫描过的结点,当j=m-1时,说明其直接...

C语言编程题~~选几个做出了给我吧~~看着我混乱了啊~用C程序哦~c++...
\/\/找出所有三位数中的完全平方数,且个十百位数都不同#include<iostream>#include<math.h>using namespace std;int main(){int array[100],array_r[100];int t=0,tt=0;int i,a,b,c;for(i=100;i<1000;i++){double m=sqrt((double)i);if(m-(int)m==0){array[t]=i;t++;}}...

五河县17816929789: C++ 约瑟夫问题: 求源代码 及 说明约瑟夫问题:M个人围成一圈,从第一个人开始报数,数到N的人出圈;再由下一个人开始报数,数到N的人出圈;…….... -
军师逍遥:[答案] #include"stdio.h"int main(void){ int a[100] = {0}; int b[100] = {0}; int m = 0,n = 0; int i = 0,/...

五河县17816929789: C++ 约瑟夫环问题 代码求解释~ -
军师逍遥: 首先,这个代码输出的是,约瑟夫环到达的最后位置.输出结果是15. //把iostream这个文件中的内容复制到这个地方. #include<iostream> using namespace std; int main() {//定义一个常量的整形100,表示人的个数.const int n=100;...

五河县17816929789: 用c++编程约瑟夫问题的源代码怎么搞 -
军师逍遥: 一个字母一个字母敲的,望采纳,这是C++版本的:#include using namespace std;int main(int argc, char* argv[]){int nNum = 0;int nDelete = 0;int nCount = ...

五河县17816929789: 用C++编写一个程序解决约瑟夫问题!求解! -
军师逍遥: #include<stdio.h> void main() { int i,remain=13; int a[13]; int count = 0; for(i=0;i<13;i++) a[i]=i+1; while(remain>1) { for(i=0;i<13;i++) { if(a[i]!=0) count++; if(count==3) { a[i]=0; remain--; count = 0; } } } for(i=0;i<13;i++) if(a[i]!=0) printf("the last one is %d\n",a[i]); }

五河县17816929789: 利用C++解决约瑟夫问题. -
军师逍遥: 这里补充一下约瑟夫问题的描述:N个人围成一圈,从第一个开始报数,数到M的人出队,然后他的下一位继续从1开始报数,数到M的出队,如此循环直到剩下一个人,求最后剩下的那个人最初是队伍中的第几位.解决这道题可以采用模拟报数...

五河县17816929789: 用C++编写一个顺序表来实现约瑟夫问题 -
军师逍遥: C++实现约瑟夫问题#include<iostream>#define MaxNum 100 using namespace std; typedef struct { int data[MaxNum]; int length; }SqList; int main() { SqList L; int i,j,k=1,e,m; cout<<"请输入总人数n和初始值m:"<<endl; cin>>L.length>>m; for(i=0;i...

五河县17816929789: 求个约瑟夫循环链表的C++程序 -
军师逍遥: #include<iostream> using namespace std;//链表结点类number为这个人的编号,key为密码 struct person { unsigned int number; unsigned int key; person *next; };//约瑟夫环类,此类包含多个person类,并控制输入输出.class joseph_ring { ...

五河县17816929789: 怎样用C语言解决 "约瑟夫问题" ? -
军师逍遥: 这是c++的,稍微修改一下就是c的程序了 #include <iostream.h> #include <stdlib.h> class CircList; class CircListNode {friend class CircList;public:CircListNode(int d = 0, CircListNode *next = NULL): data( d ), link( next ) {}int data;...

五河县17816929789: 帮忙用C++或C编写约瑟夫环的程序 -
军师逍遥: /* joseph */#include<stdio.h>#include<stdlib.h> typedef struct Node { int password; int num; struct Node *next; }Node,*Link; Link joseph(int n) { Link p,r,q; int i; q=(Node *)malloc(sizeof(Node)); for( i=1;i<=n;i++) { p=(Node *)malloc(sizeof(Node)); if(!p) exit...

五河县17816929789: 跪求! C++ ! 利用 循环链 表实现 约瑟夫 问题的求解 -
军师逍遥: #include struct Node { int data; Node *next; }; void main() { int n,k,m,i,s; Node *p,*q,*head; cout cin>>n; cout cin>>k; cout cin>>m; head=new Node; //确定头结点 p=head; for(i=1;i { p->data=i; p->next=new Node; //为下一个新建内存 p=p->next; } ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网