除法
輸入正整數(shù)n,按從小到大的順序輸出所有形如 abcde/fghij=n的表達(dá)式,其中a~j恰好為數(shù)字0~9的一個(gè)排列,2<=n<=79。
樣例輸入:
62
樣例輸出:
79546/01283=62
94736/01528=62
如何解決這個(gè)問(wèn)題?
2010-7-16更新
上面的問(wèn)題讓我一下子想到了如何求一個(gè)序列的全排列的問(wèn)題,于是順著這個(gè)思路摸索了一下。Google到了一個(gè)算法。
遞歸
例說(shuō)明如何編寫(xiě)全排列的遞歸算法。
1、首先看最后兩個(gè)數(shù)4, 5。 它們的全排列為4 5和5 4, 即以4開(kāi)頭的5的全排列和以5開(kāi)頭的4的全排列。由于一個(gè)數(shù)的全排列就是其本身,從而得到以上結(jié)果。
2、再看后三個(gè)數(shù)3, 4, 5。它們的全排列為3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六組數(shù)。
即以3開(kāi)頭的和4,5的全排列的組合、以4開(kāi)頭的和3,5的全排列的組合和以5開(kāi)頭的和3,4的全排列的組合.
從而可以推斷,設(shè)一組數(shù)p = {r1, r2, r3, ... ,rn}, 全排列為perm(p),pn = p - {rn}。
因此perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), ... , rnperm(pn)。當(dāng)n = 1時(shí)perm(p} = r1。
為了更容易理解,將整組數(shù)中的所有的數(shù)分別與第一個(gè)數(shù)交換,這樣就總是在處理后n-1個(gè)數(shù)的全排列。