国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

搜索與圖論(acwing算法基礎(chǔ))

這篇具有很好參考價值的文章主要介紹了搜索與圖論(acwing算法基礎(chǔ))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

DFS

排列數(shù)字

#include<iostream>
using namespace std;
int n ;
int a[10];
bool s[10];
void dfs(int u)
{
    if(u == n)
    {
        for(int i = 0 ; i <n ; i++) cout << a[i] << " " ;
        cout << endl ;
        return;
    }
    
    for(int i = 1; i <= n ; i++)
    {
        if(!s[i])
        {
            a[u] = i;
            s[i] = true ;
            dfs(u+1);
            a[u] = 0 ;
            s[i] = false;
        }
    }
    
    
}
int main()
{
    cin >> n ;
    dfs(0);
    return 0;
}

n皇后

#include<iostream>
using namespace std;
const int N = 20 ;
char g[N][N] ;
bool c[N], x[N] , y[N];
int n , m ;
void dfs(int u)
{
    if(u == n)
    {
        for(int i = 0 ; i < n; i++) cout << g[i] << endl;
        cout << endl;
        return ;
    }
    for(int i = 0 ; i < n ; i++)
    {
        if(!c[i] && !x[u+i] && !y[u-i+n])
        {
            c[i] = x[u+i] = y[u-i+n] = true ;
            g[u][i] = 'Q';
            dfs(u+1);
            g[u][i] = '.';
            c[i] = x[u+i] = y[u-i+n] = false ;
        }
    }
}
int main()
{
    cin >> n;
    for(int i = 0 ; i < n ; i++)
        for(int j = 0 ; j < n ; j++)
            g[i][j] = '.' ;
    
    dfs(0);        
    return 0 ;
}

BFS

走迷宮

#include<iostream>
#include<cstring>
using namespace std;
typedef pair<int,int> PII ;
const int N = 110 ;
PII q[N * N];
int f[N][N] , d[N][N];
int n , m ;
int dx[] = {0,1,0,-1} , dy[] = {1,0,-1,0} ;
int bfs()
{
    memset(d , -1 , sizeof d);
    d[1][1] = 0 ;
    q[0] = {1,1};
    int hh = 0 , tt = 0 ;
    while(hh <= tt)
    {
        auto t = q[hh++] ;
        for(int i = 0 ; i < 4 ; i++)
        {
            int x = t.first + dx[i] , y = t.second + dy[i] ;
            if(x<=n &&x>0 && y<=m && y>0 && d[x][y] == -1 && f[x][y] == 0)
            {
               q[++tt] = {x,y};
               d[x][y] = d[t.first][t.second] + 1 ;
            }
        }
    }
    return d[n][m];
}
int main()
{
    cin >> n >> m ;
    for(int i = 1 ; i <= n ; i++)
        for(int j = 1 ; j <= m ; j++)
            cin >> f[i][j];
    
    cout << bfs();
    return 0;
}

拓撲序列

單鏈表

點擊跳轉(zhuǎn)至例題
搜索與圖論(acwing算法基礎(chǔ))
搜索與圖論(acwing算法基礎(chǔ))
idx存的是指針

樹與圖的深度優(yōu)先搜索

樹的重心
搜索與圖論(acwing算法基礎(chǔ))

每個節(jié)點都是一個單鏈表

模擬隊列

hh = 0 , tt = -1

有向圖的拓撲序列

搜索與圖論(acwing算法基礎(chǔ))
都是從前指向后,即有向無環(huán)圖(不能有環(huán))
所有入度為0的點,都能排在前面的位置

搜索與圖論(acwing算法基礎(chǔ))
刪掉t->j的邊,僅僅是j的入度減一,當j的入度為0的時候,放入隊列文章來源地址http://www.zghlxwxcb.cn/news/detail-478062.html

#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e5 + 10;
int n , m ;
int e[N] , h[N] , ne[N] , idx;
int d[N] , q[N];
void add(int a , int b)
{
    e[idx] = b , ne[idx] = h[a] , h[a] = idx++;
}
bool topool()
{
    int hh = 0 , tt = -1 ;
    for(int i = 1;  i <= n ; i++)
        if(!d[i]) q[++tt] = i ;
    
    while(hh <= tt)
    {
        int t = q[hh++];
        for(int i = h[t] ; i != -1 ; i = ne[i])
        {
            int j = e[i]; 
            d[j] -- ;
            if(d[j] == 0) q[++tt] = j ;
        }
    }
    
    return tt == n - 1;
}
int main()
{
    cin >> n >> m ;
    memset(h , -1 , sizeof h) ;
    for(int i = 0 ; i < m ; i++)
    {
        int x,y;
        cin >> x >> y;
        add(x,y);
        d[y]++;
    }
    if(topool())
    {
        for(int i = 0 ; i < n ; i++) cout << q[i] << " " ;
    }
    else cout << -1 ;
    return 0;
}

bellman-ford

有邊數(shù)限制的最短路

spfa

spfa求最短路

spfa判斷負環(huán)

Floyd

Floyd求最短路

Prim

Prim算法求最小生成樹

Kruskal

Kruskal算法求最小生成樹

染色法判定二分圖

染色法判定二分圖

到了這里,關(guān)于搜索與圖論(acwing算法基礎(chǔ))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ? ★ 算法基礎(chǔ)筆記(Acwing)(三)—— 搜索與圖論(17道題)【java版本】

    ? ★ 算法基礎(chǔ)筆記(Acwing)(三)—— 搜索與圖論(17道題)【java版本】

    1. 排列數(shù)字(3分鐘) 每次遍歷dfs參數(shù)是 遍歷的坑位 原題鏈接 2. n-皇后問題 原題鏈接 方法 1. 按行遍歷(過程中有回溯、剪枝) 思想: 每次遞歸中,遍歷一行的元素,如果可以放皇后,就遞歸到下一行,下一行中不行了,就返回來,回溯, 方法2. 按每個元素遍歷(沒有減枝)

    2024年02月05日
    瀏覽(22)
  • 第3章:搜索與圖論【AcWing】

    第3章:搜索與圖論【AcWing】

    閱讀前導 本文默認讀者有數(shù)據(jù)結(jié)構(gòu)和圖論基礎(chǔ),本文是對圖論的幾個代表性算法的入門,雖然題目的解法比較樸素,但是比較好理解。 首先簡單復習一下離散數(shù)學中圖論的相關(guān)概念。 圖是由頂點和邊組成,頂點一般表示對象,邊一般表示對象之間的關(guān)系。 在圖論中,多個頂

    2024年02月03日
    瀏覽(16)
  • 算法基礎(chǔ)課-搜索與圖論

    算法基礎(chǔ)課-搜索與圖論

    題目鏈接:842. 排列數(shù)字 - AcWing題庫 思路:寫的很好的題解AcWing 842. 排列數(shù)字--深度優(yōu)先遍歷代碼+注釋 - AcWing 也可以考慮使用c++自帶的next_permutation函數(shù)直接秒了: 題目鏈接:844. 走迷宮 - AcWing題庫 思路:由于bfs是一層一層擴展,所以能保證走到終點時,走過的距離最短,所

    2024年04月15日
    瀏覽(24)
  • 【算法基礎(chǔ):搜索與圖論】3.3 拓撲排序

    【算法基礎(chǔ):搜索與圖論】3.3 拓撲排序

    https://oi-wiki.org/graph/topo/ 本文主要學習拓撲排序相關(guān)知識。 拓撲排序的英文名是 Topological sorting。 拓撲排序要解決的問題是給一個 有向無環(huán)圖 的 所有節(jié)點排序 。 我們可以拿大學每學期排課的例子來描述這個過程,比如學習大學課程中有:程序設(shè)計,算法語言,高等數(shù)學,

    2024年02月16日
    瀏覽(26)
  • 【算法基礎(chǔ):搜索與圖論】3.2 樹與圖的dfs和bfs

    【算法基礎(chǔ):搜索與圖論】3.2 樹與圖的dfs和bfs

    要學會建樹、建圖的通用方法。 dfs 和 bfs 的代碼框架。 https://www.acwing.com/problem/content/848/ 在 dfs 的過程中,統(tǒng)計各個節(jié)點作為斷點時的連通塊最大值。 https://www.acwing.com/problem/content/849/ 看到最短距離就可以想到使用寬搜。 注意! :題目中說明了 a 和 b 表示存在一條從 a 走到

    2024年02月16日
    瀏覽(21)
  • 【算法基礎(chǔ):搜索與圖論】3.5 求最小生成樹算法(Prim&Kruskal)

    【算法基礎(chǔ):搜索與圖論】3.5 求最小生成樹算法(Prim&Kruskal)

    最小生成樹 有關(guān)樹的定義 生成子圖 :生成子圖是從原圖中選取部分節(jié)點以及這些節(jié)點之間的邊所組成的圖。生成子圖中的所有節(jié)點和邊都必須在原圖中存在。 生成樹 :一個連通 無向圖 的 生成子圖 ,同時要求是樹。也即在圖的邊集中選擇 n - 1 條,將所有頂點連通。 我們

    2024年02月16日
    瀏覽(22)
  • 【算法基礎(chǔ):搜索與圖論】3.6 二分圖(染色法判定二分圖&匈牙利算法)

    【算法基礎(chǔ):搜索與圖論】3.6 二分圖(染色法判定二分圖&匈牙利算法)

    https://oi-wiki.org/graph/bi-graph/ 二分圖是圖論中的一個概念, 它的所有節(jié)點可以被分為兩個獨立的集合,每個邊的兩個端點分別來自這兩個不同的集合 。 換句話說, 二分圖中不存在連接同一集合內(nèi)兩個節(jié)點的邊 。 如何判斷一個圖是二分圖? 當且僅當圖中不含奇數(shù)環(huán) 。(奇數(shù)

    2024年02月16日
    瀏覽(24)
  • 【算法基礎(chǔ):搜索與圖論】3.4 求最短路算法(Dijkstra&bellman-ford&spfa&Floyd)

    【算法基礎(chǔ):搜索與圖論】3.4 求最短路算法(Dijkstra&bellman-ford&spfa&Floyd)

    關(guān)于最短路可見:https://oi-wiki.org/graph/shortest-path/ 無向圖 是一種 特殊的 有向圖。(所以上面的知識地圖上沒有區(qū)分邊有向還是無向) 關(guān)于存儲:稠密圖用鄰接矩陣,稀疏圖用鄰接表。 樸素Dijkstra 和 堆優(yōu)化Dijkstra算法的 選擇就在于圖 是 稠密的還是稀疏的。 算法步驟: 有一

    2024年02月16日
    瀏覽(50)
  • 算法基礎(chǔ)復盤筆記Day07【搜索與圖論】—— Prim、Kruskal、染色體判定二分圖、匈牙利算法

    算法基礎(chǔ)復盤筆記Day07【搜索與圖論】—— Prim、Kruskal、染色體判定二分圖、匈牙利算法

    ? 作者主頁:歡迎來到我的技術(shù)博客?? ? 個人介紹:大家好,本人熱衷于 Java后端開發(fā) ,歡迎來交流學習哦!( ̄▽ ̄)~* ?? 如果文章對您有幫助,記得 關(guān)注 、 點贊 、 收藏 、 評論 ?????? ?? 您的支持將是我創(chuàng)作的動力,讓我們一起加油進步吧?。?!???? 1. 題目

    2024年02月02日
    瀏覽(22)
  • 算法基礎(chǔ)復盤筆記Day06【搜索與圖論】—— Dijkstra、bellman-ford、spfa、Floyd

    算法基礎(chǔ)復盤筆記Day06【搜索與圖論】—— Dijkstra、bellman-ford、spfa、Floyd

    ? 作者主頁:歡迎來到我的技術(shù)博客?? ? 個人介紹:大家好,本人熱衷于 Java后端開發(fā) ,歡迎來交流學習哦!( ̄▽ ̄)~* ?? 如果文章對您有幫助,記得 關(guān)注 、 點贊 、 收藏 、 評論 ?????? ?? 您的支持將是我創(chuàng)作的動力,讓我們一起加油進步吧?。?!???? 1. 題目

    2023年04月22日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包