博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
约瑟夫环问题
阅读量:5122 次
发布时间:2019-06-13

本文共 1948 字,大约阅读时间需要 6 分钟。

题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,

每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。
当一个数字删除后,从被删除数字的下一个继续删除第m个数字。
求出在这个圆圈中剩下的最后一个数字。

这个问题数学上已经得出了递推公式

 递推公式:   f[1]=0;   f[i]=(f[i-1]+m)%i; (i>1)

当然我们就不推了,这里给出一个中规中矩的用环的方法来解决此问题

1 Node* Josephus(Node* Head,int m){ 2       Node* p=Head; 3       while(true){ 4             for(int i=0;i
next; 6 if(p->next!=p){
//还没到最后一个节点 7 Node* temp=p->next; 8 int tempdata=p->data; 9 p->data=temp->data;10 temp->data=tempdata;11 p->next=temp->next;12 free(temp);13 }else//就剩下一个节点了14 break;15 }16 return p;17 }

 

 给出一个完成的程序

/*约瑟夫环,输入m,n,输出其序列,例如输入 5,3,输出:3 1 5 2 4*/#include 
using namespace std;typedef struct Node { int element; Node *pNext;}Node,*LinkList;void InitList(LinkList& head){ head=(LinkList)malloc(sizeof(Node)); head->pNext=NULL;}int ListLength(LinkList head){ int length=-1; LinkList p=head; while (p!=NULL) { length++; p=p->pNext; } return length; }void main(){ cout<<"输入M:"<
>M; cout<<"输入N:"<
>N; LinkList head,rear; InitList(head); rear=head; for (int i=1;i<=M;i++) { LinkList temp=(LinkList)malloc(sizeof(Node)); temp->element=i; temp->pNext=NULL; rear->pNext=temp; rear=temp; } rear->pNext=head->pNext; free(head); head=rear->pNext; i=1; while (head->pNext!=head) { if (i%N!=0) { rear=head; head=head->pNext; i++; } else { rear->pNext=head->pNext; cout<
element<
pNext; i++; } } cout<
element<

 

 

转载于:https://www.cnblogs.com/GoAhead/archive/2012/05/25/2518592.html

你可能感兴趣的文章
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
Blog文章待看
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>