算法提高 阮小二買彩票

算法提高 阮小二買彩票

在同學們的幫助下,阮小二是變的越來越懶了, 連算賬都不願意自己親自動手了,每天的工作就是坐在電腦前看自己的銀行賬戶的錢是否有變多。可是一段時間觀察下來,阮小二發現自己賬戶的錢增長好慢啊,碰 到節假日的時候連個銅板都沒進,更鬱悶的是這些天分文不進就算了,可恨的是銀行這幾天還有可能“落井下石”(代扣個人所得稅),看着自己賬戶的錢被負增長 了,阮小二就有被割肉的感覺(太痛苦了!),這時阮小二最大的願望無疑是以最快的速度日進斗金,可什麼方法能夠日進斗金呢?搶銀行(老本行)?不行,太危 險,怕有命搶沒命花;維持現狀?受不了,摟錢太慢了!想來想去,抓破腦袋之後,終於想到了能快速發家致富的法寶----買彩票,不但掙了錢有命花,運氣好 的話,可以每天中他個幾百萬的,豈不爽哉!抱着這種想法,阮小二開始了他的買彩票之旅。想法是“好的”(太天真了OR 太蠢了),可是又發現自己的數學功底太差,因爲不知道數字都有哪些組合排列?那現在就請同學們寫個遞歸程序,幫助阮小二解決一下這個問題吧!

輸入格式:

不超過6位數的正整數N,注意:構成正整數N的數字可重複

輸出格式:

組成正整數N的所有位數的全排列,這些排列按升序輸出,每個排列佔一行。

輸入樣例:

在這裏給出一組輸入。例如:

123

輸出樣例:

在這裏給出相應的輸出。例如:

123
132
213
231
312
321

方法:

這道題是一個典型的全排列問題,c++的algorithm庫裏面有全排列函數(next_permutation),實現方法我們還是瞭解一下,
https://blog.csdn.net/MoreWindows/article/details/7370155
這篇博客全排列講的很好,可以研究一下全排列的實現。

代碼:

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    string s;
    cin >> s;
    sort(s.begin(), s.end());
    do {
        cout << s << endl;
    }while(next_permutation(s.begin(), s.end()));
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章