8.24 JDBC 呼叫儲存過程
阿新 • • 發佈:2020-08-24
46. 全排列
給定一個 沒有重複 數字的序列,返回其所有可能的全排列。
示例:
輸入: [1,2,3]
輸出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
全排列:
排列的定義:從n個不同元素中,任取m(m≤n,m與n均為自然數,下同)個元素按照一定的順序排成一列,叫做從n個不同元素中取出m個元素的一個排列;從n個不同元素中取出m(m≤n)個元素的所有排列的個數,叫做從n個不同元素中取出m個元素的排列數,用符號 A(n,m)表示。
組合:
組合的定義:從n個不同元素中,任取m(m≤n)個元素併成一組,叫做從n個不同元素中取出m個元素的一個組合;從n個不同元素中取出m(m≤n)個元素的所有組合的個數,叫做從n個不同元素中取出m個元素的組合數。用符號 C(n,m) 表示。
計算公式:
C(n,m)=C(n,n-m)。(n≥m)
程式碼:
#include<iostream> #include<bits/stdc++.h> #include<cstring> #include<vector> #include<map> using namespace std; void Perm(int list[],int k,int m){ //list 陣列存放排列的數,K表示層 代表第幾個數,m表示陣列的長度 if(k==m){ //K==m 表示到達最後一個數,不能再交換,最終的排列的數需要輸出;for (int i = 0; i <= m; i++) { cout<<list[i]<<" "; } cout<<endl; }else { for (int i = k; i <= m; i++) { swap(list[i],list[k]); Perm(list,k+1,m); swap(list[i],list[k]); } } }int main () { int list[]={1,2,3}; Perm(list,0,2); }
輸出:
1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 3 1 2