一圈人报数,数到3出来,继续报,求最后剩下的人,原来的编号。
static int p[] = new int[9]; static int [] np = null; public static void main(String[] args) { for(int i=0;i<9;i++){ p[i]=i; } circle(p); for(int i=0;i<np.length;i++){ System.out.println(np[i]); } } public static void circle(int[] p){ int m = 0; for(int i=0;i<p.length;i++){ m++; if(m==3){ m=0; np = rebulid(p,i); if(np.length>2){ circle(np); } } } } public static int[] rebulid(int[] p,int i){ int [] np = new int [p.length-1]; int c = i+1; if(c>=p.length){ c=c-p.length; } for(int j=0;j<np.length;j++){ np[j] = p[c]; c++; i++; if(c>=p.length){ c=c-p.length; } } return np; }