描述:
城堡是乙個4×4的方格,為了保衛城堡,現需要在某些格仔裡修建一些堡壘。城堡中的某些格仔是牆,其餘格仔都是空格,堡壘只能建在空格裡,每個堡壘都可以向上下左右四個方向射擊,如果兩個堡壘在同一行或同一列,且中間沒有牆相隔,則兩個堡壘都會把對方打掉。問對於給定的一種狀態,最多能夠修建幾個堡壘。
輸入:
每個測例以乙個整數n(1<=n<=4)開始,表示城堡的大小。接下來是n行字元每行n個,『x』表示該位置是牆,『.』表示該位置是空格。n等於0標誌輸入結束。
輸出:
每個測例在單獨的一行輸出乙個整數:最多修建堡壘的個數。
輸入樣例:
4 .x..
…. xx..
…. 2
xx .x
3 .x.
x.x
.x.
3 …
.xx
.xx
4 ….
…. ….
…. 0
輸出樣例:
5 1
5 2
4**如下:
#include
using
namespace
std;
int curnum = 0;
int max = 0;
char a[10000][10000] = ;
void search(int i, int n);
bool iscanput(int x, int y, int n);
int main()
}search(0, n);
test[j++] = max;
max = 0;
curnum = 0;
}else
}for (int i = 0; i < j; i++) }/*
回溯法查詢
*/void search(int i, int n)
}else
search(i + 1, n);
}}/*
剪枝條件
*/bool iscanput(int x, int y, int n)
while (y >= 0 && a[r][y] == '.')
if (y < 0 || (y >= 0 && a[r][y] == 'x'))
if (x < 0 || (x >= 0 && a[x][c] == 'x'))
}return
false;}/*
4.x..
....
xx..
....2xx
.x3.x.x.x
.x.3
....xx
.xx4
....
....
....
....
0*/
回溯法 堡壘問題
描述 城堡是乙個4 4的方格,為了保衛城堡,現需要在某些格仔裡修建一些堡壘。城堡中的某些格仔是牆,其餘格仔都是空格,堡壘只能建在空格裡,每個堡壘都可以向上下左右四個方向射擊,如果兩個堡壘在同一行或同一列,且中間沒有牆相隔,則兩個堡壘都會把對方打掉。問對於給定的一種狀態,最多能夠修建幾個堡壘。輸入 每...
演算法實驗二 回溯法 堡壘問題
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述城堡是乙個4 4的方格,為了保衛城堡,現需要在某些格仔裡修建一些堡壘。城堡中的某些格仔是牆,其餘格仔都是空格,堡壘只能建在空格裡,每個堡壘都可以向上下左右四個方向射擊,如果兩個堡壘在同一行或同一列,且中間沒有牆相隔,則兩個堡壘都...
回溯法解決馬步遍歷問題
設計一演算法,求解西洋棋中的馬的周遊問題 給定一8 8的棋盤,馬從棋盤的某個位置出發,經過棋盤中的每乙個方格恰好一次。只需求一可行解 一 演算法思想描述 指定乙個起點座標,從起點開始對每個點遍歷其能到達的八方向上的點,如果可以踩則走到該結點上,並繼續深入遍歷,直到最後走完所有的結點。二 完整的程式以...