解題思路:說白了就是一題求連通塊的題目,這裡運用深度優先搜尋,遍歷每乙個合法的位置,每到乙個位置全域性變數ans都會自加1。這裡一定要注意判別條件,越界的陣列和根據題目要求為#的陣列要素直接跳過即可。遍歷完全後列印全域性變數的數值。注意題目中要求尋找起點的要求。
總時間限制:
1000ms
記憶體限制:
65536kb
描述有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。
輸入包括多個資料集合。每個資料集合的第一行是兩個整數w和h,分別表示x方向和y方向瓷磚的數量。w和h都不超過20。在接下來的h行中,每行包括w個字元。每個字元表示一塊瓷磚的顏色,規則如下
1)『.』:黑色的瓷磚;
2)『#』:白色的瓷磚;
3)『@』:黑色的瓷磚,並且你站在這塊瓷磚上。該字元在每個資料集合中唯一出現一次。
當在一行中讀入的是兩個零時,表示輸入結束。
輸出對每個資料集合,分別輸出一行,顯示你從初始位置出發能到達的瓷磚數(記數時包括初始位置的瓷磚)。
樣例輸入
6 9樣例輸出....#.
.....#
......
......
......
......
......
#@...#
.#..#.
0 0
45
#include#includechar maze[21][21];
bool mark[21][21];
int n,m;
int ans;
int go[4][2]
;void dfs(int x,int y) }
int main()
memset(mark,false,sizeof(mark));
int sx,sy;
for(int i=0;i}
} dfs(sx,sy);
printf("%d\n",ans);
} return 0;
}
DFS特訓 紅與黑(POJ2816)遞迴解法
解題思路 其實遞迴與上一題紅與黑dfs方法求解的思路基本一致,只是這裡的解法更能反映遞迴的特質,我覺得會更有利於幫助我們理解遞迴從而更自如地運用遞迴 經測試,耗時相同的情況下 量也相對少一些 如果遇到不是 的符號,return 1 f x 1,y f x 1,y f x,y 1 f x,y 1 返回...
POJ 棋盤問題(DFS)
在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...
DFS特訓 修改天平(UVA12166)方法很巧妙
解題思路 題解思路值得借鑑。因為題目要求最小變動的秤砣數量,所以至少有乙個秤砣是不變的。我們可以固定某乙個子秤砣,根據其深度 確定為dfs引數之一 得到整個天平的重量,若其他子秤砣固定求得的天平重量與其相等,則表示固定某乙個秤砣,其餘這些無需變動。因此我們可以求得各個天平重量出現的次數,即定義乙個m...