藍橋杯試題 演算法訓練 王 後傳說

2021-10-17 04:20:24 字數 1437 閱讀 5985

藍橋杯試題 演算法訓練 王、後傳說

題目描述:

資源限制

時間限制:1.0s 記憶體限制:256.0mb

問題描述

地球人都知道,在西洋棋中,後如同太陽,光芒四射,威風八面,它能控制橫、堅、斜線位置。

看過清宮戲的中國人都知道,後宮乃步步驚心的險惡之地。各皇后都有自己的勢力範圍,但也總能找到相安無事的辦法。

所有中國人都知道,皇權神聖,伴君如伴虎,觸龍顏者死…

現在有乙個n*n的皇宮,國王佔據他所在位置及周圍的共9個格仔,這些格仔皇后不能使用(如果國王在王宮的邊上,占用的格仔可能不到9個)。當然,皇后也不會攻擊國王。

現在知道了國王的位置(x,y)(國王位於第x行第y列,x,y的起始行和列為1),請問,有多少種方案放置n個皇后,使她們不能互相攻擊。

輸入格式

一行,三個整數,皇宮的規模及表示國王的位置

輸出格式

乙個整數,表示放置n個皇后的方案數

樣例輸入

8 2 2

樣例輸出

10資料規模和約定

n<=12

注意n個皇后擺放需要滿足的條件:

(1)每2個皇后不能放在同一行,同一列,同乙個斜線(兩個點組成的線的斜率的絕對值為1)。

(2)皇帝的位置以及周圍的位置(一共9個位置)不能擺放皇后。

解題思路:

由上面的擺放條件可以知道,每2個皇后不能在同一行,和同一列,那麼我們可以把問題轉化為這樣:找出1~n的全排列作為皇后擺放的列數的序列(行數是固定從1—>n的,方便計算和遞迴),當然這些全排列序列需要滿足每兩個位置的(第幾行,第幾列)的斜率絕對值不能是1,且不能在皇帝所在的位置。

#include

#include

#include

#include

#include

#include

using

namespace std;

int n;

//皇宮的規模

int ans=0;

//最後的答案,即放置n個皇后的方案數

int a[15]

;//a[i]的值表示,在第step行的第 a[i]列擺放皇后

int vis[15]

;//標記該位置是否訪問過,0表示為沒有被訪問

voidf(

int step,

int x,

int y)

//step表示給第step行擺放皇后

else}if

(!flag)}}

}}intmain()

藍橋杯 演算法訓練 王 後傳說

問題描述 地球人都知道,在西洋棋中,後如同太陽,光芒四射,威風八面,它能控制橫 堅 斜線位置。看過清宮戲的中國人都知道,後宮乃步步驚心的險惡之地。各皇后都有自己的勢力範圍,但也總能找到相安無事的辦法。所有中國人都知道,皇權神聖,伴君如伴虎,觸龍顏者死.現在有乙個n n的皇宮,國王佔據他所在位置及周圍...

演算法訓練 王 後傳說 藍橋杯

問題描述 地球人都知道,在西洋棋中,後如同太陽,光芒四射,威風八面,它能控制橫 堅 斜線位置。看過清宮戲的中國人都知道,後宮乃步步驚心的險惡之地。各皇后都有自己的勢力範圍,但也總能找到相安無事的辦法。所有中國人都知道,皇權神聖,伴君如伴虎,觸龍顏者死.現在有乙個n n的皇宮,國王佔據他所在位置及周圍...

藍橋杯 演算法訓練 王,後傳說

題目 演算法訓練 王 後傳說 時間限制 1.0s 記憶體限制 256.0mb 問題描述 地球人都知道,在西洋棋中,後如同太陽,光芒四射,威風八面,它能控制橫 堅 斜線位置。看過清宮戲的中國人都知道,後宮乃步步驚心的險惡之地。各皇后都有自己的勢力範圍,但也總能找到相安無事的辦法。所有中國人都知道,皇權...