五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

算法解析 Next Permutation 下一個排列

2023-02-18 19:58 作者:EKVTGwNJiElK  | 我要投稿

實現(xiàn)的功能

它能計算比某一個排列大的所有排列中的最小排列。這里的大小指的是字典序,即把排列看成是?n 進(jìn)制的 n 位數(shù)進(jìn)行比較。如果 s%3D%5B4%2C3%2C2%2C1%2C5%2C6%5D,將此算法應(yīng)用于?s 將得到?%5B4%2C3%2C2%2C1%2C5%2C6%5D

代碼分析

這是 glibc 位于頭文件 bits/stl_algo.h 對函數(shù)?std::next_permutation?的實現(xiàn),這個函數(shù)能對一個序列應(yīng)用此算法。

這一大段代碼用 OIer 的語氣寫,大概就是這樣。其中?swap?交換兩個變量的值;reverse?反轉(zhuǎn)排列,兩個參數(shù)分別為起點下標(biāo)和終點下標(biāo)加一。

算法分析

從后往前找到第一個(從前往后最后一個)滿足?a_i%3Ca_%7Bi%2B1%7D?的?i,此時第?i?個數(shù)后面的數(shù),組成的子序列遞減,是最大的排列了。所以要想得到更大的排列必須修改?a_i。接著向后遍歷?a_i?后比它大的最小的數(shù)?i%2B1%5Csim%20n,把?a_i?和?a_j?交換,接著把第 i%2B1%5Csim%20n?的數(shù)按從小到大排序就好。因為此時要排序的數(shù)已經(jīng)遞減了,所以能用?reverse?在線性時間內(nèi)完成這里的排序。


算法解析 Next Permutation 下一個排列的評論 (共 條)

分享到微博請遵守國家法律
扶沟县| 定安县| 三原县| 化德县| 杭锦后旗| 朝阳市| 民权县| 日喀则市| 乌兰察布市| 阿荣旗| 东源县| 凯里市| 临汾市| 新沂市| 西城区| 顺平县| 大连市| 中阳县| 东光县| 永和县| 大港区| 镇雄县| 赤峰市| 古田县| 积石山| 长海县| 荣昌县| 滨海县| 内丘县| 工布江达县| 闸北区| 分宜县| 邳州市| 柳林县| 新野县| 色达县| 西乌珠穆沁旗| 尚义县| 凤阳县| 邯郸市| 贵州省|