日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Next Permutation

發布時間:2024/4/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Next Permutation 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 該算法還是比較簡單的。一共分為三步,即:1. 找位置;2. 交換;3. 倒序。下面結合具體例子{3,7,9,8,6,2}來進行說明。

? ? 1. 找位置。從末尾開始往前找到第一個降序的位置。如上述例子中,第一個降序的位置為1,值為7。再從該位置的后面部分找到從后往前找到第一個比該值大的數,即8,位置為3.

? ? 2. 交換。對上述找到的位置的值進行交換。序列變成了{3,8,9,7,6,2}。

? ? 3. 倒序。對第一個降序位置后面的部分進行倒序,即把{9,7,6,2}倒序為{2,6,7,9}。

? ? 代碼如下:

class Solution { public:void nextPermutation(vector<int> &num) {int p,q,i,t=0;int guard;int N=num.size();if(num.size()<2)return;p=N-1;while(p>0&&num[p-1]>=num[p]){p--;}p--;if(p>=0){for(i=N-1;i>p;i--){if(num[i]>num[p]){break;}}t=num[p];num[p]=num[i];num[i]=t;}p=p+1;q=N-1;while(p<q){t=num[p];num[p]=num[q];num[q]=t;p++;q--;}} };

  

轉載于:https://www.cnblogs.com/zhizhizhiyuan/p/3533405.html

總結

以上是生活随笔為你收集整理的Next Permutation的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。