欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言全排列回溯算法介紹

 更新時(shí)間:2022年01月14日 14:38:37   作者:執(zhí)念斬長(zhǎng)河  
大家好,本篇文章主要講的是C語(yǔ)言全排列回溯算法介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下

前言

本博文源于最近學(xué)習(xí)的遞歸算法,遞歸中遇到一個(gè)問(wèn)題全排列的問(wèn)題,我看見(jiàn)回溯特別神奇,特此記錄一下。對(duì)比一下深度優(yōu)先搜索與廣度優(yōu)先搜索,個(gè)人感覺(jué)這里的回溯像是一種遞歸樹(shù)中的深度優(yōu)先搜索的算法,他不斷構(gòu)造往下延伸的深度,使其達(dá)到完全編列

算法思想

比如3拿來(lái)舉例,按照一般正常的話(huà)就是應(yīng)該,

123 132 213 231 312 321

六種,先造出一個(gè)hashtable數(shù)組讓其存儲(chǔ)在各位是否使用,然后創(chuàng)建path的p數(shù)組將數(shù)字進(jìn)行選填,遞歸樹(shù)我花在文章下面。

在這里插入圖片描述

完整代碼

#include<cstdio>
const int maxn = 11;
//P 為當(dāng)前排列 HashTable記錄整個(gè)數(shù)x是否已經(jīng)在P中
int n,P[maxn],hashTable[maxn] = {false};
//當(dāng)前處理排列的第index位置
void generateP(int index) {
    if(index == n+1){
        for(int i=1;i<=n;i++){
            printf("%d",P[i]);
        }
        printf("\n");
        return ;
    }
    for(int x = 1;x<=n;x++) {
        if(hashTable[x] == false) {
            P[index] = x;
            hashTable[x] = true;
            generateP(index + 1);
            hashTable[x] = false;
        }
    }
}
int main()
{
    n = 3;
    generateP(1);
    return 0;

}

實(shí)驗(yàn)效果

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于C語(yǔ)言全排列回溯算法介紹的文章就介紹到這了,更多相關(guān)C語(yǔ)言全排列算法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論