最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言全排列回溯算法介紹

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

前言

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

算法思想

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

123 132 213 231 312 321

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

在這里插入圖片描述

完整代碼

#include<cstdio>
const int maxn = 11;
//P 為當前排列 HashTable記錄整個數(shù)x是否已經(jīng)在P中
int n,P[maxn],hashTable[maxn] = {false};
//當前處理排列的第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;

}

實驗效果

在這里插入圖片描述

總結(jié)

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

相關(guān)文章

  • C++面向?qū)ο髮崿F(xiàn)五子棋小游戲

    C++面向?qū)ο髮崿F(xiàn)五子棋小游戲

    本文介紹了如何運用面向?qū)ο笏枷脒M行五子棋游戲的設(shè)計與開發(fā),與面向過程程序設(shè)計比較,面向?qū)ο蟪绦蛟O(shè)計更易于實現(xiàn)對現(xiàn)實世界的描述,提高軟件的擴展性和可維護性。附上最終的程序源碼,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • C++11標準庫 互斥鎖 <mutex> 詳解

    C++11標準庫 互斥鎖 <mutex> 詳解

    這篇文章主要介紹了C++11標準庫互斥鎖 <mutex> 的相關(guān)知識,使用call_once()的時候,需要一個once_flag作為call_once()的傳入?yún)?shù),本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-07-07
  • 詳談signed 關(guān)鍵字

    詳談signed 關(guān)鍵字

    c++中關(guān)鍵字有幾十個,其中類型修飾關(guān)鍵字有l(wèi)ong, short, singed, unsigned。今天我們就來談一下經(jīng)常被大家忽視的signed關(guān)鍵字
    2015-01-01
  • Qt實現(xiàn)拖動單個控件移動的示例代碼

    Qt實現(xiàn)拖動單個控件移動的示例代碼

    做慣了靜態(tài)圖,今天來搞一搞動態(tài)圖吧!本文將利用Qt實現(xiàn)拖動單個控件移動效果,文中的示例代碼講解詳細,感興趣的可以動手嘗試一下
    2022-06-06
  • 深入理解C++中std::chrono庫的使用

    深入理解C++中std::chrono庫的使用

    在程序設(shè)計中,時間管理是一個核心概念,它不僅關(guān)系到程序的效率和性能,而且直接影響用戶體驗,C++作為一門高效的編程語言,提供了std::chrono庫,用于精確地處理和計算時間,下面就跟隨小編一起學習一下std::chrono庫的使用吧
    2023-12-12
  • C/C++?Qt實現(xiàn)文章小說人物關(guān)系分析

    C/C++?Qt實現(xiàn)文章小說人物關(guān)系分析

    這篇文章主要為大家詳細介紹了C/C++?Qt如何實現(xiàn)文章小說人物關(guān)系分析功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • C語言詳解如何實現(xiàn)堆及堆的結(jié)構(gòu)與接口

    C語言詳解如何實現(xiàn)堆及堆的結(jié)構(gòu)與接口

    堆是計算機科學中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個可以被看做一棵完全二叉樹的數(shù)組對象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法。本文將詳細介紹堆的結(jié)構(gòu)與接口,需要的可以參考一下
    2022-04-04
  • 利用簡潔的C語言代碼解決跳臺階問題與約瑟夫環(huán)問題

    利用簡潔的C語言代碼解決跳臺階問題與約瑟夫環(huán)問題

    這篇文章主要介紹了利用簡潔的C語言代碼解決跳臺階問題與約瑟夫環(huán)問題的方法,跳臺階問題與約瑟夫環(huán)問題是常見的基礎(chǔ)算法題目,需要的朋友可以參考下
    2016-02-02
  • 淺談C++中replace()方法

    淺談C++中replace()方法

    C++編程語言中的string應(yīng)用方式多樣化,每一種應(yīng)用方式都能幫助我們提實現(xiàn)特定的功能需求。在這里我們將會為大家詳細介紹一下其中一個比較重要的用法,有關(guān)C++ replace()函數(shù)的應(yīng)用方式,需要的朋友可以參考下
    2015-11-11
  • C語言實現(xiàn)單鏈表實現(xiàn)方法

    C語言實現(xiàn)單鏈表實現(xiàn)方法

    這篇文章主要介紹了C語言實現(xiàn)單鏈表實現(xiàn)方法的相關(guān)資料,鏈表分為單向鏈表、雙向鏈表、循環(huán)鏈表,需要的朋友可以參考下
    2017-08-08

最新評論

巩义市| 长治县| 滦平县| 科技| 临桂县| 防城港市| 长顺县| 淮阳县| 安丘市| 南江县| 舟山市| 西青区| 叙永县| 朝阳县| 贵德县| 勃利县| 芷江| 涞源县| 休宁县| 朝阳市| 衡东县| 清新县| 泗水县| 澎湖县| 明溪县| 墨竹工卡县| 安国市| 方城县| 旅游| 本溪市| 嘉祥县| 方山县| 平阴县| 绵阳市| 玉树县| 柞水县| 霍城县| 阜康市| 宁南县| 镇康县| 翁源县|