导航:首页 > 编程语言 > 约瑟夫集合java

约瑟夫集合java

发布时间:2025-02-24 23:46:39

『壹』 java中“index=-1”是什么意思

某些查询方法中,如果没有查找到你想要的结果,就会返回-1,表示没有查找到。

『贰』 java循环单链表实现约瑟夫环,我的代码出列顺序不正确

你的remove方法不对,你的方法每次删掉的是从head开始第m个位置的节点,
但约瑟夫环需要的内是容要删掉每次循环数到m的位置的节点。
remove方法可以去掉,再把out方法改一下就可以了。
public void out(int m) throws Exception {
Node p = head;
Node pre = null;
int count = 1;
while (curlen > 0) {
if (count == m) {
System.out.print(p.getData() + " ");
if(pre != null){
pre.setNext(p.getNext());
}
p = p.getNext();
curlen = curlen - 1;
count = 1;
} else {
pre = p;
p = p.getNext();
count++;
}
}
}

『叁』 java编程17人编号为0-16围成一圈,0号人开始从1报数,凡是报数为3倍数的人离开圈子,继续到一个,问他编号

这是一个约瑟夫环的问题
解答如下:
依据提议,可以将题目等价变换为:“n(n=17)人编号为0到(n-1)围成一圈,0号人开始从0报数,凡是报数为m-1 (m=3)倍数的人离开圈子,继续到一个,问他编号”
一开始的状态
0,1,2,3,4,5 ..... (n-2), (n-1) 【n个人】
第一个人被踢之后 设第一个被踢的人的编号为k, 则 k = m%n-1 【当n=17,m=3时,k=2。也就是说编号为2的人离开了圈子】
这时候的状态
0, .... (k-1), (k+1) ,(k+2)...(n-2),(n-1) 【(n-1)个人,当n=17,m=3时: 0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16】
将这时候的编号做转换. 因为是围城一个圈子,下一个开始数的是(k+1).所以也可以表示为
(k+1),(k+2) ... (n-2),(n-1),0....(k-1) 【(n-1)个人,当n=17,m=3时: 3,4,5,6,7,8,9,10,11,12,13,14,15,16,0,1】
重新编号。得到:
0,1,2,3,4...(n-3),(n-2)【(n-1)个人】 这个时候 ,这里重新构成了一个约瑟夫环。也就是说,这是一个递推的关系。
这里我们进行了重新编号。那么 (n-1)个人和 n个人之间的编号不一样的。但是两者之间有一定的关系,可以冲新编号推导出老的
公式如下: i' = (i+k)%(n-1) 【比如,当n=17,m=3时 . 新的环编号是 (n-2),我要求他在老的环中的编号,那么编号是 i' = ( (n-2) + k ) % (n-1) = 17%16 = 1,就是老的换种编号为1的那一个 】
反过来有 :i = (i'+m)%n
有了上面的推断,可以代码如下:

int ysf(int n,int m){
if(n==1){
return 0; //当环内只有一个人的时候,就是他自己
}
return (ysf(n-1,m) + m ) % n ;
}

------------------完整代码---------------------
public class Test{
public static void main(String[] args){
int a = 17;
int b = 3;
System.out.println(ysf(a,b));
}

static int ysf(int n,int m){
if(n==1){
return 0;
}
return (ysf(n-1,m) +m) % n;
}
}

阅读全文

与约瑟夫集合java相关的资料

热点内容
怎么把ps文件变成源文件 浏览:807
如何把图片放进这个文件夹 浏览:530
谁有qq认证图标复制 浏览:881
2014年web服务器测试工具 浏览:192
win7镜像文件怎么用 浏览:983
多数据can怎么发送 浏览:997
什么是夏威夷果种植技术app 浏览:160
上海学习编程哪个地方好 浏览:958
股票软件与交易编程软件哪个好 浏览:216
linux如何查看一个文件的位置 浏览:911
c头文件无法打开源文件stdafx 浏览:750
苹果x的桌面上可以建文件夹 浏览:368
ug8532位破解版安装教程 浏览:490
电脑网络如何重新驱动 浏览:125
win10连接服务器命令 浏览:228
卢克raid活动20升级卷 浏览:969
机票预订什么网站好 浏览:690
读写xml配置文件 浏览:153
java爬虫解析html 浏览:861
约瑟夫集合java 浏览:275

友情链接