問題:
大家知道,給出正整數n,則1 到n 這n 個數可以構成n!種排列,把這些排列按照從
小到大的順序(字典順序)列出,如n=3 時,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1
六個排列。
給出某個排列,求出這個排列的下k 個排列,如果遇到最後乙個排列,則下1 排列為第
1 個排列,即排列1 2 3…n。
比如:n = 3,k=2 給出排列2 3 1,則它的下1 個排列為3 1 2,下2 個排列為3 2 1,因
此答案為3 2 1。
輸入資料
第一行是乙個正整數m,表示測試資料的個數,下面是m 組測試資料,每組測試資料
第一行是2 個正整數n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n 個正整數,是1,2 … n
的乙個排列。
輸出要求
對於每組輸入資料,輸出一行,n 個數,中間用空格隔開,表示輸入排列的下k 個排列。
輸入樣例
33 1
2 3 1
3 13 2 1
10 2
1 2 3 4 5 6 7 8 9 10
輸出樣例
3 1 2
1 2 3
1 2 3 4 5 6 7 9 8 10
#include int mycompare(const void* e1, const void* e2)int main()
int i,j,index = -1;
for(i = 0; i < k; i ++)
}int m;
if(index == -1 )
printf("\n");
return 0;
}int candidate = an[j], index2 = j;
for(m = j; m < n; m++)
}int swap = an[index];
an[index] = candidate;
an[index2] = swap;
qsort(an + j, n - j , sizeof(int), mycompare);
} }int i;
for(i = 0; i < n; i++)
printf("\n");
return 0;
}
杰哥私房題 487 3279
號碼的標準格式是七位十進位制數,並在第 三 第四位數字之間有乙個連線符。撥 號盤提供了從字母到數字的對映,對映關係如下 a,b,和c 對映到 2 d,e,和f 對映到 3 g,h,和i 對映到 4 j,k,和l 對映到 5 m,n,和o 對映到 6 p,r,和s 對映到 7 t,u,和v 對映到 8...
杰哥私房題 麥森數
問題描述 形如2p 1 的素數稱為麥森數,這時p 一定也是個素數。但反過來不一定,即如果p 是 個素數。2p 1 不一定也是素數。到1998 年底,人們已找到了37 個麥森數。最大的乙個是 p 3021377,它有909526 位。麥森數有許多重要應用,它與完全數密切相關。你的任務 輸入p 1000...
杰哥私房題 校門外的大樹
問題描述 某校大門外長度為 l 的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 1 公尺。我們 可以把馬路看成乙個數軸,馬路的一端在數軸 0 的位置,另一端在 l 的位置 數軸上的每 個整數點,即 0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點...