不可重複全排列。。。。

2021-06-21 02:01:04 字數 848 閱讀 6702

比如說 122

有重複數字

想想如何計算個數,就是全排列除以重複的全排列

只要讓重複的有順序就好了。。

於是用個used 來計算個數,第n個只有在第n-1個用過之後才能用。這樣就 ok 了

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define read freopen("acm.in","r",stdin)

#define write freopen("acm.out","w",stdout)

#define ll long long

#define ull unsigned long long

#define pii pair#define pdi pair#define pdd pair#define mii map::iterator

#define fst first

#define sec second

#define ms(x,d) memset(x,d,sizeof(x))

#define inf 0x3f3f3f3f

#define all(x) x.begin(),x.end()

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define root 0,n-1,1

#define pb push_back

#define for(a,b,c) for(int a=b;a

全排列不重複

include include include using namespace std int h 256 define n 100 char indexss 儲存上乙個排列的值 重複的排列是相鄰的 void quanpaiwithoutrepety char a,int len,int index...

全排列(可排除重複)

首先我們來說一下這個問題的基本演算法,其實很簡單,是乙個典型的遞迴演算法 1.abbc 排序 讓相等的字元連續 2.a bbc 求解以第乙個字元開頭的組合 3.b abc 發現第二個字元b和上一組組合的頭a 不相等,所以調換,並求解一新頭 b 開頭的組合 4.abbc 還原上一次的交換 5.abbc...

無重複的全排列

這是乙個無重複字串行的全排列,用的思想是遞迴,直接上 慢慢領會。include include include void swap char p1,char p2 void permutation char pstr,char pbegin else int main 大致的思路是依次將所有的字元放...