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

溫故知新:dfs模板-843. n-皇后問題

這篇具有很好參考價值的文章主要介紹了溫故知新:dfs模板-843. n-皇后問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

n?n?皇后問題是指將?nn?個皇后放在?n×nn×n?的國際象棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處于同一行、同一列或同一斜線上。

溫故知新:dfs模板-843. n-皇后問題,溫故知新,深度優(yōu)先,算法

現(xiàn)在給定整數(shù)?nn,請你輸出所有的滿足條件的棋子擺法。

輸入格式

共一行,包含整數(shù)?nn。

輸出格式

每個解決方案占?nn?行,每行輸出一個長度為?nn?的字符串,用來表示完整的棋盤狀態(tài)。

其中?.?表示某一個位置的方格狀態(tài)為空,Q?表示某一個位置的方格上擺著皇后。

每個方案輸出完成后,輸出一個空行。

注意:行末不能有多余空格。

輸出方案的順序任意,只要不重復(fù)且沒有遺漏即可。

數(shù)據(jù)范圍

1≤n≤91≤n≤9

輸入樣例:
4
輸出樣例:
.Q..
...Q
Q...
..Q.

..Q.
Q...
...Q
.Q..

思路

深度優(yōu)先搜索,我們需要排除永遠不可能的情況(剪枝),首先是初始化二維數(shù)組,把二維數(shù)組初始化為'.'

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            g[i][j]='.';
        }
    }

深度優(yōu)先搜索分兩步走,第一步是判斷有沒有走到終點,走到終點就輸出我們需要的答案

    if(u==n)
    {
        for(int i=0;i<n;i++)    puts(g[i]);
        puts("");
        return;
    }

第二步是遍歷每一行,利用條件判斷,找到可以符合條件的情況(該題是行,對角線,反對角線不能被使用過),然后改變使用狀態(tài),修改字符數(shù)組的內(nèi)容,遞歸調(diào)用dfs函數(shù),恢復(fù)現(xiàn)場,把狀態(tài)和字符數(shù)組的內(nèi)容都修改回來

    int x=u;
    for(int y=0;y<n;y++)
    {
        if(!col[y]&&!dg[y+x]&&!udg[y-x+n])
        {
            col[y]=dg[y+x]=udg[y-x+n]=true;
            g[x][y]='Q';
            dfs(x+1);
            col[y]=dg[y+x]=udg[y-x+n]=false;
            g[x][y]='.';
        }
    }

這里把u和i更換成了x和y,感覺更加方便理解

代碼

#include<bits/stdc++.h>
using namespace std;

int n;
const int N=20;
char g[N][N];
bool col[N],dg[N],udg[N];

void dfs(int u)
{
    if(u==n)
    {
        for(int i=0;i<n;i++)    puts(g[i]);
        puts("");
        return;
    }
    
    int x=u;
    for(int y=0;y<n;y++)
    {
        if(!col[y]&&!dg[y+x]&&!udg[y-x+n])
        {
            col[y]=dg[y+x]=udg[y-x+n]=true;
            g[x][y]='Q';
            dfs(x+1);
            col[y]=dg[y+x]=udg[y-x+n]=false;
            g[x][y]='.';
        }
    }
}

int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            g[i][j]='.';
        }
    }
    dfs(0);
    return 0;
}

?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-728167.html

?

?

到了這里,關(guān)于溫故知新:dfs模板-843. n-皇后問題的文章就介紹完了。如果您還想了解更多內(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)文章

  • Linux學(xué)習(xí)第31天:Linux MISC 驅(qū)動實驗:溫故知新

    Linux學(xué)習(xí)第31天:Linux MISC 驅(qū)動實驗:溫故知新

    Linux版本號4.1.15? ?芯片I.MX6ULL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ?? 大叔學(xué)Linux? ? 品人間百味? 思文短情長 ? ? ? ? ? 學(xué)習(xí)是一個不斷重復(fù)的過程。只有不斷的使用、修正,才能越記越牢。將學(xué)習(xí)到的新的知識點應(yīng)用到以往的項目經(jīng)驗中,才能不斷提升自我,長此以往

    2024年02月06日
    瀏覽(18)
  • 溫故知新之:代理模式,靜態(tài)代理和動態(tài)代理(JDK動態(tài)代理)

    溫故知新之:代理模式,靜態(tài)代理和動態(tài)代理(JDK動態(tài)代理)

    代理模式可以在不修改被代理對象的基礎(chǔ)上,通過擴展代理類,進行一些功能的附加與增強。 靜態(tài)代理 是一種代理模式的實現(xiàn)方式,它在編譯期間就已經(jīng)確定了代理對象,需要為每一個被代理對象創(chuàng)建一個代理類。靜態(tài)代理的實現(xiàn)比較簡單,但是每個被代理對象都需要創(chuàng)建

    2024年02月11日
    瀏覽(30)
  • .net 溫故知新【17】:Asp.Net Core WebAPI  中間件

    .net 溫故知新【17】:Asp.Net Core WebAPI 中間件

    到這篇文章為止,關(guān)于.NET \\\"溫故知新\\\"系列的基礎(chǔ)知識就完結(jié)了,從這一系列的系統(tǒng)回顧和再學(xué)習(xí),對于.NET core、ASP.NET CORE又有了一個新的認識。 不光是從使用,還包括這些知識點的原理,雖然深入原理談不上,但對于日常使用也夠了,我想的是知其然,知其所以然。 在實際

    2024年01月18日
    瀏覽(96)
  • .net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

    .net 溫故知新【11】:Asp.Net Core WebAPI 入門使用及介紹

    在Asp.Net Core 上面由于現(xiàn)在前后端分離已經(jīng)是趨勢,所以asp.net core MVC用的沒有那么多,主要以WebApi作為學(xué)習(xí)目標。 我使用的是VS2022, .Net 7版本。 在創(chuàng)建界面有幾項配置: 配置Https 啟用Docker 使用控制器 啟用OpenAPI支持 不使用頂級語句 其中配置Https 是WebApi是否使用https協(xié)議,啟

    2024年02月07日
    瀏覽(90)
  • DFS(深度優(yōu)先遍歷、N皇后問題、2N皇后問題)

    DFS(深度優(yōu)先遍歷、N皇后問題、2N皇后問題)

    目錄 一、回溯法與深度優(yōu)先搜索(DFS) 二、DFS與二叉樹的前序遍歷 2.1、二叉樹的前序遍歷 2.2、DFS 全排列 ?2.3、分析 三、N皇后問題 1. 回溯法: 是一種通過探索所有可能的候選解來找出所有解的算法。如果候選解被確認不是一個解的話(或者至少不是最后一個解),回溯法

    2024年03月21日
    瀏覽(25)
  • N皇后問題(DFS解決)

    N皇后問題(DFS解決)

    先贊后看,養(yǎng)成習(xí)慣!??!^ _ ^3 ?? ?? ?? 碼字不易,大家的支持就是我堅持下去的動力。點贊后不要忘了 關(guān)注 我哦! 題目鏈接

    2024年04月28日
    瀏覽(17)
  • N皇后問題詳解:回溯算法的應(yīng)用與實踐(dfs)

    N皇后問題詳解:回溯算法的應(yīng)用與實踐(dfs)

    題目如上圖所示,在一個 n*n 的國際象棋棋盤上怎么擺放能使得皇后互相攻擊不到(也就是在 任意一列、一行、一條對角線上都不存在兩個皇后 ) 1.DFS 想要解決這個問題,我們可以使用dfs也就是 深度優(yōu)先遍歷 ,深度優(yōu)先搜索的步驟為先遞歸到底再回溯上來,顧名思義,df

    2024年03月26日
    瀏覽(24)
  • 溫故而知新-JVM垃圾收集器

    標記-清除 復(fù)制算法 標記-整理 現(xiàn)在垃圾收集器均采用分代收集策略,新生代由于98%的對象都是朝生夕死,復(fù)制算法更合適,只復(fù)制還存活的對象,工作量小,所以效率高。顯然復(fù)制算法不適合老年代,因為老年代中的對象大部分是大對象,且長時間存活,復(fù)制算法效率太低

    2024年02月15日
    瀏覽(94)
  • 【溫故而知新】HTML5 WebSocket

    HTML5是HTML的最新版本,它引入了許多新的元素和功能,以適應(yīng)現(xiàn)代網(wǎng)頁開發(fā)的需求。以下是HTML5的一些主要特點: 新增語義元素 :HTML5引入了許多新的語義元素,如 header、footer、article、section 等,這些元素有助于提高網(wǎng)頁的結(jié)構(gòu)化和可訪問性。 媒體支持 :HTML5引入了 audio 和

    2024年01月18日
    瀏覽(93)
  • 【溫故而知新】JavaScript的繼承方式有那些

    JavaScript使用原型鏈來實現(xiàn)繼承。每個JavaScript對象都有一個原型(prototype)屬性,它指向另一個對象。當我們訪問一個對象的屬性時,如果該對象沒有該屬性,JavaScript會沿著原型鏈向上查找,直到找到該屬性或者到達原型鏈的頂部(即Object.prototype)。 有多種方式來實現(xiàn)繼承

    2024年01月19日
    瀏覽(91)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包