main()
{
int M=0;
int a[]={1,2,3,...,2*N};//這裏要根據輸入的N動態分配內存並初始化,也可以用壹個足夠大的靜態數組,比如int a[20000];可以處理N從1-10000
for(;;)
{
M++;
洗牌(a,N);
if(還原)break;
}
輸出:N M
}
洗牌(int a[], int N)
{
int b[2*N];//足夠大的數組,或者動態分配
for(i=0;i<N;i++) b[i*2+1]=a[i];
for(i=0;i<N;i++) b[i*2] = a[N+i];
復制b到a;
}