|
C语言趣味程序百例精解之java实现: 70.魔术师猜牌(2)
//思考方法同第69题
public class Test70{
public static void main(String args[]){
magic70();
}
public static void magic70(){
int Max=27;
int[] box=new int[Max];//空盒子26个,box[0]不用
box[1]=1;//初始化第一张牌
int i,n,j=1;
for(i=2;i<=26;i++){
n=1;
do{
if(j>26) j=1;//j超过最后一个元素则指向1号盒子
if(box[j]!=0){//跳过非空的盒子,不进行计数
j++;
}else{
if(n==3) box[j]=i;//若数到第3个空盒子,则将牌放入空盒中
j++;
n++;//对空盒计数
}
}while(n<=3);
}
for(i=1;i<=26;i++){//输出牌的排列顺序
System.out.printf("%c",box>13?'r':'b');
System.out.printf("%-4d",box>13?box-13:box);
}
}
}
运行:
C:\bat>java Test70
b1 r6 b10 b2 r12 r3 b3 b11 r9 b4 r7 b12 b5 r4 r13 b6
b13 r11 b7 r5 r1 b8 r8 r10 b9 r2 |
|