约瑟夫问题c语言解决约瑟夫问题

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

约瑟夫问题。一个递推公式求解释我没整出来。不过应该不难。

#include<stdio.h> #include<string.h> int last(int num, t) { char m, n, dat[100], p= 0, len= num; for(m= 0; m < num; m++) dat[m]= m; dat[m]= 0; for(m= 0; m < num-1; m++) { for(n= 0; n<t; n++) { p++; if(p > len) p= 1; } printf("p=%d", p); strcpy(&dat[p-1], &dat[p]); p-= 1; len--; for(int i= 0; i< len ; i++) printf("%3d", dat[i]); printf(" "); } return dat[0]; } int main() { last(10, 3); return 0; }

约瑟夫问题c语言

#include #define size 100 /* 输入人数的上限 */ void main() { int person[size]; int i, j; /* 循环修正变量 */ int arrayLen; /* 数组长度 */ int start, overNum; /* 开始位置各跨过位置 */ int deleNum; /* 出列人所在数组中的下标 */ int name, total; /* 输入时,人的信息以及人的总数 */ printf( "请输入圆桌上人的总数: " ); scanf( "%d", &arrayLen ); printf( " " ); if( ( arrayLen > size ) || ( arrayLen < 0 ) ) { printf( "超出范围,请重新输入: " ); scanf( "%d", &arrayLen ); printf( " " ); }; printf( "请输入各个人的信息(整数): " ); for( i = 0; i < arrayLen; i++ ) { scanf( "%d", &name ); person[i] = name; } printf( "你输入的数据的顺序为: " ); for( i = 0; i < arrayLen - 1; i++ ) printf( " %d ==>", person[i] ); printf( "%d ", person[arrayLen - 1] ); printf( "你打算从第几个人开始? 请输入开始号: " ); scanf( "%d", &start ); printf( " " ); start = start - 1; printf( "请输入相邻两出列人之间的间隔: " ); scanf( "%d", &overNum ); printf( " " ); total = arrayLen; printf( "程序运行后,出列人的顺序为: " ); for( i = 0; i < total; i++ ) /* 要打印total个人的情况,故做total次 */ { if ( arrayLen == 1 ) printf( "%d", person[0] ); /* 如果是数组只剩一个元素,直接出列 */ else { deleNum = ( start + overNum - 1 ) % arrayLen; /* 此取模保证循环 */ printf( "%d ==> ", person[deleNum] ); for ( j = deleNum; j < arrayLen; j++ ) /* 将出列元素后面的各元素前移 */ person[j] = person[j+1]; start = deleNum; arrayLen = arrayLen - 1; /* 移动完毕后,数组长度减1 */ } } printf( " " ); } 从一本数据结构书上看到的用向量实现此问题: void Josephus (Vector &P, int n, int s, int m) { //将人员编号存入向量P; int k = 1; for(int i = 0; i=1; j--) { s1=(s1+m-1)%j; if(s1== 0) s1 = j; int w = P.Getnode(s1 - 1); P.Remvoe(s1 - 1); P.Insert(w,n-1); } } 以前学C语言的时侯写的,希望对你有用。

c语言解决约瑟夫问题

我自己写的直接用一维数组解决 #include<stdio.h> #define N 9 //总人数 #define K 1 //开始数数的人 #define M 3 //间隔的人数 //给数组赋值 void setDate(int a[],int n) { int i; for(i=0;i<n;i++) a[i]=i+1; } //删除被选中的孩子 void deleted(int a[],int m,int len) { int i=m; do { a[i]=a[i+1]; i++; }while(i<len); } //开始play void play(int a[],int k,int m) { int len =N; int dm=k+m-2;//第一个被剔除的孩子 while(len!=1) {printf("第%d个孩子被剔除。

",a[dm]); deleted(a,dm,len);//将被剔除的孩子从数组中删除 dm=dm+M-1;//下一个被剔除的孩子 len--;//数组的长度减1 if(dm>=len) dm=dm-len; } printf("最后一个孩子是%d.",a[0]);//最后一个孩子被放在a[0]中 } main() { int a[N]; setDate(a,N); play(a,K,M); }

v5server:香港+美国机房,优质CN2网络云服务器,7折优惠,低至35元/月

v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...

傲游主机38.4元起,韩国CN2/荷兰VPS全场8折vps香港高防

傲游主机怎么样?傲游主机是一家成立于2010年的老牌国外VPS服务商,在澳大利亚及美国均注册公司,是由在澳洲留学的害羞哥、主机论坛知名版主组长等大佬创建,拥有多家海外直连线路机房资源,提供基于VPS主机和独立服务器租用等,其中VPS基于KVM或者XEN架构,可选机房包括中国香港、美国洛杉矶、韩国、日本、德国、荷兰等,均为CN2或者国内直连优秀线路。傲游主机提供8折优惠码:haixiuge,适用于全...

DogYun27.5元/月香港/韩国/日本/美国云服务器,弹性云主机

DogYun怎么样?DogYun是一家2019年成立的国人主机商,称为狗云,提供VPS及独立服务器租用,其中VPS分为经典云和动态云(支持小时计费及随时可删除),DogYun云服务器基于Kernel-based Virtual Machine(Kvm)硬件的完全虚拟化架构,您可以在弹性云中,随时调整CPU,内存,硬盘,网络,IPv4路线(如果该数据中心接入了多条路线)等。DogYun弹性云服务器优...

约瑟夫问题为你推荐
swooleswoole和workerman哪个更易开发元数据管理请元数据管理包括哪些内容?李昊天铠甲勇士2刑天的李昊天秘密是什么jdk6Java 中的 JDK 6 Update 6 到哪下载啊 ? 有一点急jdk6我是win7的系统,安装了JDK6,环境配置都正确了。但是安装完没有应用程序啊~弹幕网站谁能给我解释一下什么叫A站,什么叫B站?都是啥网站?layoutsubviews如何自定义UISearchBar?layoutsubviews如何设置plus.nativeui.toast的样式新手怎么制作表格我是初学者、电脑上怎么制作表格easeljs如何使用createjs来编写html5游戏
韩国服务器租用 个人域名备案 godaddy域名解析 仿牌空间 linode代购 360抢票助手 win8.1企业版升级win10 申请个人网页 网通服务器托管 shopex主机 宏讯 视频服务器是什么 电信网络测速器 独立主机 工信部网站备案查询 腾讯云平台 hosting24 phpinfo 第八届中美互联网论坛 forwarder 更多