1. 程式人生 > >全排列函數C++實現

全排列函數C++實現

clas 實現 col namespace 思想 mes void pac span

例題:求由123456789構成的所有九位數字

1 用C++的next_permutation函數

#include <iostream>
#include <stdio.h>
#include <algorithm>
int main(){
    int a[9] = {1,2,3,4,5,6,7,8,9}; 
        while(next_permutation(a, a+9)){
            for(int i =0;i<9;i++)
                cout<<a[i];
            cout
<<endl; } return 0; }

註意:

  1 要添加頭文件#include <algorithm>

  2 輸出的所有數組,並不包含初始數組,即123456789

2 利用dfs思想實現

#include <iostream>
using namespace std;
int t[10];
bool vist[10];void dfs(int start){
    if(start == 10){
      //輸出數組 }
else{ for(int i=1
;i<10;i++){ if(vist[i] == 0){ t[start] = i; vist[i] = 1; dfs(start+1); vist[i] = 0; } } } } int main(){ int a[9] = {1,2,3,4,5,6,7,8,9}; for(int i=1;i<10;i++) vist[i] = 0
; dfs(1);return 0; }

全排列函數C++實現