相信大家都知道這是一個(gè)的算法問(wèn)題,約瑟夫環(huán)的c語(yǔ)言實(shí)現(xiàn)是利用了指針鏈表的形式,java實(shí)現(xiàn)呢,我的這個(gè)是用了內(nèi)部類.
算法描述:n個(gè)人圍成一圈,每人有一個(gè)各不相同的編號(hào),選擇一個(gè)人作為起點(diǎn),然后順時(shí)針從1到k數(shù)數(shù),每數(shù)到k的人退出圈子,圈子縮小,然后從下一個(gè)人繼續(xù)從1到k數(shù)數(shù),重復(fù)上面過(guò)程。求最后推出圈子的那個(gè)人原來(lái)的編號(hào)。
程序?qū)崿F(xiàn):
public class JosephCircle {
private class Node {
public Node nextnode;
public boolean flag;
}
private Node[] list;
public JosephCircle() {
list = new Node[30];
int i;
for (i = 0; i < 30; i++) {
Node node = new Node();
node.flag = true;
if (i > 0) {
list[i - 1].nextnode = node;
}
list[i] = node;
}
list[i - 1].nextnode = list[0];
}
public void start() {
Node node = list[29];
for (int i = 0; i < 135; i++) {
if ((i+1) % 8 == 0) {
node.flag = false;
node.nextnode = node.nextnode.nextnode;
} else {
node = node.nextnode;
}
}
}
public void print() {
Node node = list[29];
for (int i = 0; i < 30; i++) {
if (node.flag) {
System.out.print("#");
} else {
System.out.print("@");
}
node = node.nextnode;
}
}
public static void main(String[] args) {
JosephCircle jc = new JosephCircle();
jc.start();
jc.print();
}
}
算法描述:n個(gè)人圍成一圈,每人有一個(gè)各不相同的編號(hào),選擇一個(gè)人作為起點(diǎn),然后順時(shí)針從1到k數(shù)數(shù),每數(shù)到k的人退出圈子,圈子縮小,然后從下一個(gè)人繼續(xù)從1到k數(shù)數(shù),重復(fù)上面過(guò)程。求最后推出圈子的那個(gè)人原來(lái)的編號(hào)。
程序?qū)崿F(xiàn):
public class JosephCircle {
private class Node {
public Node nextnode;
public boolean flag;
}
private Node[] list;
public JosephCircle() {
list = new Node[30];
int i;
for (i = 0; i < 30; i++) {
Node node = new Node();
node.flag = true;
if (i > 0) {
list[i - 1].nextnode = node;
}
list[i] = node;
}
list[i - 1].nextnode = list[0];
}
public void start() {
Node node = list[29];
for (int i = 0; i < 135; i++) {
if ((i+1) % 8 == 0) {
node.flag = false;
node.nextnode = node.nextnode.nextnode;
} else {
node = node.nextnode;
}
}
}
public void print() {
Node node = list[29];
for (int i = 0; i < 30; i++) {
if (node.flag) {
System.out.print("#");
} else {
System.out.print("@");
}
node = node.nextnode;
}
}
public static void main(String[] args) {
JosephCircle jc = new JosephCircle();
jc.start();
jc.print();
}
}

