题目:
对n个随机排列的十位数,等距离取四个数字出来(包括正向间隔1个距离取数、反向1个距离取数、正向2个距离取数和反向2个距离取数。间隔一个数子,称为1个距离,间隔2个数字,称为2个距离。就取这两种距离就够了)。比如给你一个十位数,01 02 03 07 08 09 06 05 04 10(随机排序的),然后按照按照以上说的四种间隔取数,先做“正向间隔1个距离取数”01 03 08 06,02 07 09 05,03 08 06 04,07 09 05 10,08 06 04 01,09 05 10 02,06 04 0,1 03,05 10 02 07,04 01 03 08,10 02 07 09;再做“反向1个距离取数”10 05 09 07,04 06 08 03,05 09 07 02,06 08 03 01,09 07 02 10,08 03 01 04,07 02 10 05,03 01 04 06,02 10 05 09,01 04 06 08;再做“正向2个距离取数”01 07 06 10,02 08 05 01...........;再做“反向2个距离取数”10 06 0
代码:
String[] allSen = {"01","02","03","04","05","06","07","08","09","10"};
Random random = new Random();
//将十个数随机排序
for(int i=0;i<allSen.length;i++){
int aaa = random.nextInt(allSen.length);
String temp = allSen[i];
allSen[i] = allSen[aaa];
allSen[aaa] = temp;
}
// LinkList linkList = new LinkList();
String[] one = new String[4];
for(int i=0;i<allSen.length;i++){
System.out.println(allSen[i]);
}
System.out.println("正1个");
for(int i=0;i<allSen.length;i++){
// if(i == 0) {
// linkList.addFirstNode(allSen[i]);
// }else {
// linkList.add(i-1, allSen[i]);
// }
int k = i;
for(int j=0;j<4;j++) {
if(j == 0) {
one[j] = allSen[i];
}else {
k += 2;
one[j] = allSen[k%10];
}
System.out.print( one[j]);
}
System.out.println();
}
System.out.println("负1个");
for(int i=allSen.length-1;i>= 0;i--){
int k = i;
for(int j=0;j<4;j++) {
if(j == 0) {
one[j] = allSen[i];
}else {
k -= 2;
one[j] = allSen[(k+10)%10];
}
System.out.print( one[j]);
}
System.out.println();
}
System.out.println("正2个");
for(int i=0;i<allSen.length;i++){
int k = i;
for(int j=0;j<4;j++) {
if(j == 0) {
one[j] = allSen[i];
}else {
k += 3;
one[j] = allSen[k%10];
}
System.out.print( one[j]);
}
System.out.println("");
}
System.out.println("负2个");
for(int i=allSen.length-1;i>=0;i--){
int k = i;
for(int j=0;j<4;j++) {
if(j == 0) {
one[j] = allSen[i];
}else {
k -= 3;
one[j] = allSen[(k+10)%10];
}
System.out.print(one[j]);
}
System.out.println("");
}