next permutation 函式的應用

2021-07-16 18:46:46 字數 1289 閱讀 8546

h - 排列2

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

practice

hdu 1716

description

ray又對數字的列產生了興趣: 

現有四張卡片,用這四張卡片能排列出很多不同的4位數,要求按從小到大的順序輸出這些4位數。 

input

每組資料佔一行,代表四張卡片上的數字(0<=數字<=9),如果四張卡片都是0,則輸入結束。 

output

對每組卡片按從小到大的順序輸出所有能由這四張卡片組成的4位數,千位數字相同的在同一行,同一行中每個四位數間用空格分隔。 

每組輸出資料間空一行,最後一組資料後面沒有空行。 

sample input

1 2 3 4

1 1 2 3

0 1 2 3

0 0 0 0

sample output

1234 1243 1324 1342 1423 1432

2134 2143 2314 2341 2413 2431

3124 3142 3214 3241 3412 3421

4123 4132 4213 4231 4312 4321

1123 1132 1213 1231 1312 1321

2113 2131 2311

3112 3121 3211

1023 1032 1203 1230 1302 1320

2013 2031 2103 2130 2301 2310

3012 3021 3102 3120 3201 3210

#include#include#include#includeusing namespace std;

int main()else if(tmp==a[0])

printf(" %d%d%d%d",a[0],a[1],a[2],a[3]);

else

printf("\n%d%d%d%d",a[0],a[1],a[2],a[3]);

tmp=a[0];

}while(next_permutation(a,a+4)); //每次輸出當前字典序的下乙個序列

printf("\n");

}return 0;

}

stl演算法 next permutation剖析

在標準庫演算法中,next permutation應用在數列操作上比較廣泛.這個函式可以計算一組資料的全排列.但是怎麼用,原理如何,我做了簡單的剖析.首先檢視stl中相關資訊.函式原型 template boolnext permutation bidirectionaliterator first...

next permutation原理剖析

最近刷leetcode的時候遇見next permutation這道題,感覺挺有意思的乙個題目,遞迴的方法是較簡單並且容易想到的,在網上搜了其餘的解法,就是std next permutation非遞迴解法,但是讓人不是很舒服的就是關於原理的部分,千篇一律的都是摘抄 stl原始碼剖析 也就是這樣的。...

演算法 Next Permutation問題》

此問題描述如下 給定乙個陣列,首先從後向前找出最長的遞減序列的前乙個元素,比如陣列中,從後向前最長遞減序列是,這個序列的前乙個元素就是4,然後再遞減序列中找到最後乙個比這個數 4 大的數字 就是5 然後將5與4交換,得到新的陣列,然後將交換過後的遞減序列進行翻轉,最後得到的結果就是。如果陣列單調遞減...