next_permutation(全排列算法)

next_permutation(全排列算法)

?STL提供了兩個用來計算排列組合關系的算法,分別是next_permutation和prev_permutation。

首先解釋下全排列,顧名思義,即一組數的全部排列的情況。

next_permutation 即列出一組數的全部排列情況,不過列出的排列先后順序有一定的規則,下面就講講next_permutation列出的先后規則。。。

規則

1.首先從最尾端開始往前尋找兩個相鄰元素,令第一元素為*i,第二元素為*ii,且滿足*i<*ii。

2.找到這樣一組相鄰元素后,再從最尾端開始往前檢驗,找出第一個大于*i的元素,令為*j,將i,j元素對調(swap)。

3.再將ii之后的所有元素顛倒(reverse)排序。

?

? ?舉個實例,假設有序列{0,1,2,3,4},下圖便是套用上述演算法則,一步一步獲得“下一個”排列組合。圖中只框出那符合“一元素為*i,第二元素為*ii,且滿足*i<*ii?”的相鄰兩元素,至于尋找適當的j、對調、逆轉等操作并未顯示出。

?

0 1 2 3 4-》0 1 2 4 3-》0 1 3 2 4-》0 1 3 4 2-》0 1 4 2 3-》0 1 4 3 2..........

剛接觸不是說的很清楚,來個簡單的應用

輸出(0 1 2 3 4)的全排列

#include<iostream>?
#include<algorithm>?
using namespace std;?
int main()?
{?
??? int ans[5]={0,1,2,3,4};?
??? sort(ans,ans+5);??? /* 這個sort可以不用,因為{0 ,1,2,3,4}已經排好序*/?
??? do???????????????????????????? /*注意這步,如果是while循環,則需要提前輸出*/?
??? {?
??????? for(int i=0;i<5;++i)?
??????????? cout<<ans[i]<<" ";?
??????? cout<<endl;?
??? }while(next_permutation(ans,ans+5));??
??? return 0;?
}?


?先說這么多,等以后再補叭叭。。。。

?

posted on 2018-05-05 19:13 Azure╰ 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lklk/p/8995644.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280410.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280410.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280410.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#自定義字符串壓縮和解壓縮源碼庫

如下的內容是關于C#自定義字符串壓縮和解壓縮庫的內容。class ZipLib{public static string Zip(string value){byte[] byteArray new byte[value.Length];int indexBA 0;foreach (char item in value.ToCharArray()){byteArray[indexBA] (byte)item;}System.IO.MemoryStrea…

使用 Visual Studio 2022 調試Dapr 應用程序

使用Dapr 編寫的是一個多進程的程序, 兩個進程之間依賴于啟動順序來組成父子進程&#xff0c;使用Visual Studio 調試起來可能會比較困難&#xff0c;因為 Visual Studio 默認只會把你當前設置的啟動項目的啟動調試。好在有Visual Studio 擴展&#xff08;Microsoft Child Proc…

卸載 cube ui_如何還原Windows 8附帶的已卸載現代UI應用程序

卸載 cube uiWindows 8 ships with built-in apps available on the Modern UI screen (formerly the Metro or Start screen), such as Mail, Calendar, Photos, Music, Maps, and Weather. Installing additional Modern UI apps is easy using the Windows Store, and unins…

rest_framework11:jwt簡單例子/自定制基于jwt認證類

jwt簡單例子 一、登陸設置 1.不需要寫login的視圖類&#xff0c;使用jwt內置的。 2.需要前置條件&#xff0c;已有繼承AbstractUser models,并且有數據&#xff0c;用于校驗&#xff0c;返回token。 urls.py from rest_framework_jwt.views import obtain_jwt_tokenurlpat…

Java各種數據類型,自己學習寫的筆記!!!

java編程規范&#xff1a; 1.良好的標識符的命名保留字不能作為標識符命名&#xff1a; class、public、static..., goto,const區分大小寫&#xff1a;helloWorld、HelloWorld 2.良好的注釋習慣 3.良好的縮進&#xff1a;沒遇到一個代碼塊縮進一次&#xff08;一個tab鍵&…

Java Decompiler(Java反編譯工具)

Java Decompiler官網地址&#xff1a;http://jd.benow.ca/ 官網介紹&#xff1a; The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions. JD-Core is a library that reconstructs Java sou…

20位程序員關于求職的疑問,以及我給出的參考答案

作者&#xff1a;陸小鳳首發&#xff1a;公眾號【程序員江湖】閱讀本文大概需要 6 分鐘。前幾天發了一條朋友圈對于求職小伙伴們提出的問題&#xff0c;我進行了收集整理&#xff0c;統一反饋。也許這20個問題也是你們遇到的問題&#xff0c;所以趁著年前趕緊把它發出來。以下2…

MassTransit | 基于MassTransit Courier 實現 Saga 編排式分布式事務

Saga 模式Saga 最初出現在1987年Hector Garcaa-Molrna & Kenneth Salem發表的一篇名為《Sagas》的論文里。其核心思想是將長事務拆分為多個短事務&#xff0c;借助Saga事務協調器的協調&#xff0c;來保證要么所有操作都成功完成&#xff0c;要么運行相應的補償事務以撤消先…

ccleaner無法更新_CCleaner正在靜默更新關閉自動更新的用戶

ccleaner無法更新CCleaner is forcing updates on users who specifically opt out of automatic updates. Users will only find out about these unwanted updates when they check the version number. CCleaner強制對專門選擇退出自動更新的用戶進行更新。 用戶只有在檢查版…

查找域內所有的Windows Server 2012 R2的服務器,并區分出哪些是物理機,那些是虛擬機...

通過使用Get-Adcomputer和Get-Wmiobject 組合來實現。思路是這樣的&#xff0c;先看一臺服務器的屬性值有什么可用利用的。[12r2-dc]: PS C:\> Get-ADComputer -Identity 12r2-dc -Properties *AccountExpirationDate :accountExpires …

rest_framework12:多登陸方式與自動簽發token/配置過期時間

多登陸方式與自動簽發token views.py 1.繼承Viewset&#xff0c;方法里可以使用自定義login&#xff0c;更直觀。需要路由直接配置請方式 2. 序列化是直接對request數據處理&#xff0c;并從對象中獲取token 3.context可以儲存自定義數據 # 多登陸方式&#xff0c;自動簽發…

20165310_獲獎感想與Java階段性學習總結

獲獎感想與Java階段性學習總結 一、Learning By Doing ? 在此之前&#xff0c;其實我并沒有想到能夠成為小黃杉的第一批成員之一&#xff0c;喜悅之余&#xff0c;也感受到了許多的壓力。小黃杉一方面代表了老師對于我這一階段學習成果的肯定&#xff0c;但同時也是對我的督促…

chrome瀏覽器崩潰_不只是您:Chrome瀏覽器在Windows 10的2018年4月更新中崩潰

chrome瀏覽器崩潰If your computer is hanging or freezing after installing the Windows 10 April 2018 Update you’re not alone, and Microsoft is aware of the problem. 如果在安裝Windows 10 April 2018 Update之后計算機掛起或死機&#xff0c;您并不孤單&#xff0c;…

讀名老中醫之路筆記(二)

任應秋&#xff1a;我的治學門徑和方法 任應秋先生從幼讀經&#xff0c;十三經皆能成誦&#xff0c;屬于帶童子功的醫學家&#xff0c;他的醫學經驗&#xff1a; 一、讀經宜讀全本&#xff0c;解經宜先識字&#xff0c;讀經宜正音讀&#xff0c;強調對經典著作的朗讀和背誦&…

致敬青春歲月

昨天發生的一件神奇的事情。我們公司工會組織了一次小型的戶外團建&#xff0c;有機會認識一些其他部門同事&#xff0c;沒想到有一個同事小心地認出了我&#xff0c;然后還談起了關于.NET技術和社區的一些發展的歷史和故事。他在微軟工作的時間比我久&#xff0c;但時空交錯&a…

談談- declare-styleable屬性

在Android開發中&#xff0c;往往要用到自定義的控件來實現我們的需求或效果。在使用自定義 控件時&#xff0c;難免要用到自定義屬性&#xff0c;那怎么使用自定義屬性呢&#xff1f; 一、簡單使用&#xff1a; 1.在文件res/values/下新建attrs.xml屬性文件&#xff0c;中定義…

docker:自定義ubuntu/制作鏡像引用/ubuntu換源更新

一、需求 1. 制作一個圖像辨識的api&#xff0c;用到相同設置的ubuntu鏡像&#xff0c;但是每次制作都要更新ubuntu和下載tesseract浪費半個到一個小時下載&#xff0c;所以制作一個自定義ubuntu幾次鏡像大大提高開發效率。 2. 制作ubuntu過程時&#xff0c;可以調試tesserac…

jQuery 屬性和CSS

HTML代碼&#xff1a; <div id"div1">div1<p>1</p><p>2</p><p>3</p> </div> <div id"div2">div2</div> <div id"div3">div3</div>attr()設置節點的屬性 $("#div1…

facebook人臉照片_為什么您的Facebook照片看起來如此糟糕(以及您可以如何做)...

facebook人臉照片Facebook is a popular platform for sharing photos, even though it’s not a very good one. They prioritize fast loading images over high quality ones. You can’t stop it from happening, but you can minimize the quality loss. Facebook是一個受…

用C#自己動手寫個操作系統,爽!

自從C#的AOT編譯機制發布以來&#xff0c;有趣的項目越來越多&#xff0c;今天給大家推薦一個開源項目&#xff0c;用C#開發的64位操作系統。項目簡介這是一個使用.NET Native AOT技術編譯的C# 64位操作系統&#xff0c;系統的基礎功能基本都已經支持&#xff1a;網卡、多處理、…