约瑟夫问题C语言编程问题:约瑟夫问题求解

约瑟夫问题  时间:2021-07-16  阅读:()

约瑟夫问题链表方法

//原来的程序是用数组做的,这个题目用数组做其实比用链表要直观,简便 //给出一个链表的解法: #include <iostream> #include <malloc.h> struct man{ int num; //编号 bool out; //是否报过数 struct man *next; }; #define N 100 /*圈内人数*/ #define M 10 /*报数*/ using namespace std; void main(){ man *head,*p,*q; int i,j=0; head=(man*)malloc(sizeof(man)); p=head; head->num=1; for(i=2;i<=N;i++) /*编号*/{ q=(man*)malloc(sizeof(man)); q->num=i; p->next=q; p=q; } q->next=head; //采用的是循环链表 int count=N; while(count){ p->out=false; p=p->next; count--; } cout<<"The out sequence is:"<<endl; //打印出圈顺序 p=head; while(count<N){ while(j<M){ q=p; if(!(p->out)) j++; p=p->next; } q->out=true; cout<<q->num<<" "; count++; j=0; } cout<<endl; getchar(); }

C语言编程:约瑟夫问题

#include "stdio.h" main() { int i,k,quit_num,a[30],*p; p=a; for(i=0;i<30;i++) *(p+i)=i+1; printf("the position of feijiaotu are: "); quit_num=0; k=0; i=0; while(quit_num<15) {if(*(p+i)!=0)k++; if(k==9) {printf("%5d",*(p+i)); quit_num++; *(p+i)=0; k=0; } i++; if(i==30)i=0; } printf(" the position of jiaotu are: "); for(i=0;i<30;i++) if(*(p+i)!=0)printf("%5d",*(p+i)); }

求约瑟夫问题思路

m从k+1开始向后迭代 用数组a[2*k]存人,1为好人0为坏人,num存剩余人数,loc存当前位置 确定下一个人用a[(loc+m)%num](具体你再算算),若要杀的人是1则看num,num==k说明此m成功

约瑟夫问题!!

只实现出列顺序 #define JN 7 #define JM 20 void jossen() { int a[JN+1]; int i=0; int j=0; int k=0; //intpwd[JN+1]; for(i=0;i<=JN;i++) {a[i]=i; /*cout<<"input the password for man “<<i<<":"; cin>>&pwd[i]*/} for(i=JN;i>=1;i--) { k=JM%i; if(0==k) k=i; /*cout<<"NO "<<JN+1-i<<": looking for "<<k<<" in: "; for(j=0;j<=JN;j++) {cout<<"a["<<j<<"]="<<a[j]<<",";} cout<<endl;*/ for(j=1;j<=JN;j++) { if(k == a[j]) { cout<<j<<", "; a[j]=0; int l=1; for(int p=j+1;l<i;p++) { if(p != JN+1 && a[p%(JN+1)]) { a[p%(JN+1)]=l++; } //cout<<"a["<<p%(JN+1)<<"]="<<a[p%(JN+1)]<<","; } break; } } cout<<endl; } }

什么是约瑟夫问题

约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。

例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。

最后剩下1号。

假定在圈子里前K个为好人,后K个为坏人,你的任务是确定这样的最少M,使得所有的坏人在第一个好人之前被杀掉。

C语言编程问题:约瑟夫问题求解

用一个循环链表就可以完成了! #include struct node{ int data; struct node *next; }node,*list,*p,*r; void JOSEPHU(int n,int k,int m) { int i,j; list=NULL; for(i=1;i<=n;i++) { p=(struct node*)malloc(sizeof(node)); p->data=i; if(list==NULL) list=p; else r->next=p; r=p; } p->next=list; /*建立一个循环链表*/ p=list; for(i=1;i<=n+1;i++) { printf("%d ",p->data); p=p->next; } printf(" "); /*打印链表,并检查循环链表是不输入正确*/ p=list; i=1; while(p&&inext; ++i; } for(i=1;inext; } printf("The out=%d ",p->data); r->next=p->next; } } void main() { int x, y, z; printf("input the lenth n ");/*n,k,m分别代表总的人数,第一个报数的人,间隔的人数*/ scanf("%d",&x); printf("input the start k "); scanf("%d",&y); printf("input the m "); scanf("%d",&z); JOSEPHU(x,y,z); }

DogYun香港BGP月付14.4元主机简单测试

前些天赵容分享过DogYun(狗云)香港BGP线路AMD 5950X经典低价云服务器的信息(点击查看),刚好账户还有点余额够开个最低配,所以手贱尝试下,这些贴上简单测试信息,方便大家参考。官方网站:www.dogyun.com主机配置我搞的是最低款优惠后14.4元/月的,配置单核,512MB内存,10GB硬盘,300GB/50Mbps月流量。基本信息DogYun的VPS主机管理集成在会员中心,包括...

半月湾($59.99/年),升级带宽至200M起步 三网CN2 GIA线路

在前面的文章中就有介绍到半月湾Half Moon Bay Cloud服务商有提供洛杉矶DC5数据中心云服务器,这个堪比我们可能熟悉的某服务商,如果我们有用过的话会发现这个服务商的价格比较贵,而且一直缺货。这里,于是半月湾服务商看到机会来了,于是有新增同机房的CN2 GIA优化线路。在之前的文章中介绍到Half Moon Bay Cloud DC5机房且进行过测评。这次的变化是从原来基础的年付49....

美国云服务器 1核 1G 100M 10G防御 39元/月 物语云计算

物语云计算(MonogatariCloud)是一家成立于2016年的老牌国人商家,主营国内游戏高防独服业务,拥有多家机房资源,产品质量过硬,颇有一定口碑。本次带来的是美国圣何塞 Equinix 机房的高性能I9-10980XE大带宽VPS,去程CN2GIA回程AS9929,美国原生IP,支持解锁奈飞等应用,支持免费安装Windows系统。值得注意的是,物语云采用的虚拟化技术为Hyper-V,资源全...

约瑟夫问题为你推荐
settimerMFC 中,全局SetTimer函数怎么用?oncontextmenuoncontextmenu="return false"是什么意思waves插件MuseScore vst插件怎么安装欢迎页面怎样在开机制造欢迎页面?ruby语言Ruby是 什么意思弹幕播放器弹弹play播放器怎么样新手怎么制作表格如何学会制作表格?药品标准查询《中华人民名共和国卫生部药品标准》【20080802】?pps网络电视pps网络电视在线观看?疫苗之王“龟毛之王”是什么意思???
联通c套餐 webhostingpad godaddy xen java空间 华为4核 美国十次啦服务器 中国电信测网速 支付宝扫码领红包 web服务器安全 华为云服务登录 google台湾 服务器防火墙 lamp是什么意思 双11促销 美国主机侦探 htaccess 跟踪路由 冰盾ddos防火墙 dmz主机 更多