description
暑假來了,綠紋龍很高興。於是飄飄乎就來到了森林一日遊。可是他卻看到了很不和諧的一幕,一群獵人在森林裡圍捕小動物。森林可以看做是乙個10*10的方格,如下圖所示,1表示獵人,0表示小動物。
已知獵人保持不動,而小動物可以往上下左右任意方向逃脫(當然不能撞上獵人)。小動物可以逃出森林。但上圖背景色被標紅的那部分小動物將永遠無法逃脫獵人的魔爪。
input
乙個10*10的矩陣,描述森林中獵人和小動物分布的情況。保證每個點要麼為獵人,要麼為小動物。
output
乙個整數,表示不能逃脫獵人魔爪的小動物數量。
samples
input
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 1 0 0
0 0 0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 0 1 0
0 1 0 1 0 1 0 0 1 0
0 1 0 0 1 1 0 1 1 0
0 0 1 0 0 0 0 1 0 0
0 0 0 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0
output
15source
石光中學 fcs2018基礎班day 6
#include
using
namespace std;
typedef
long
long ll;
int a[
100]
[100];
ll ans;
void
dfs(
int x,
int y)
return;}
intmain()
for(
int i=
1;i<=
10;i++
)for
(int j=
1;j<=
10;j++)if
(a[i]
[j]==0)
ans++
; cout<
return0;
}
說一下大體的思路:
首先從這個二維矩陣的四個角開始dfs(1,i); dfs(i,1); dfs(10,i); dfs(i,10);
向裡面掃,函式主體很容易理解:
if(x>=1 && x<=10 &&y>=1 &&y<=10 &&!a[x][y])
是為了確保我們一定是在這個二維矩陣內操作,不會越界,如果遇到1就會停止。(遇到1就會停止,換言之,1起到了保護他內部0不會被修改的作用),所以可以執行的位置一定是0並且不是1內部的0.
那麼我們就把這個位置a[x][y]=1;
變成1,因為他對最後的結果沒有貢獻(結果是被1包圍的0的數量)
dfs(x+1,y); dfs(x-1,y); dfs(x,y+1); dfs(x,y-1);
這裡我們只需要暴力搜尋每乙個可以走到的位置就可以了。
可能會有疑惑的地方是為什麼要在最開始加乙個for迴圈
for
(int i=
1;i<=
10;i++
)
那是因為可能會出現如下的情況(以5*5為例):
010
1001
0100
1010
0101
0011
10
在這種情況下,如果只是從四個角位置上開始掃,那麼中間的4個0很顯然是掃不到的,因為他們的周圍有1的保護。但是按照題意,這4個動物是在邊界位置的,也就是說這4個動物會逃跑,很顯然如果只是從四個角開始掃,是不符合題意的,不完整的。因此我們要在四條邊的每乙個點開始掃一遍,以確保答案的正確性(沒有動物在邊界)。
完成了以上的操作,沒有被1圍起來的0(沒有被獵人包圍的動物)全都被標記成了1,而被包圍的動物很顯然,由於1的保護,仍然是0.
我們最後只要再檢驗0的數量,就可以得到最終的答案。
for
(int i=
1;i<=
10;i++
)for
(int j=
1;j<=
10;j++)if
(a[i]
[j]==0)
ans++
;
以上只是鄙人的拙見,如果有錯誤、不足之處,還請指正。 RHEL6入門系列之一,Linux的來龍去脈
近幾年,作為開源專案的linux系統憑藉出色的穩定性和安全性,得到越來越多企業的青睞。對於有志於學習網路技術的同學們,除了windows server之外,linux也是一種必須要學習掌握的伺服器作業系統。下面就讓我們一起開始踏入linux的世界。對於大多數初學者,在開始學習 linux之前一般都會...
牛客小白月賽6 指紋鎖(set容器的騷操作)
ha實驗有一套非常嚴密的安全保障體系,在ha實驗基地的大門,有乙個指紋鎖。該指紋鎖的加密演算法會把乙個指紋轉化為乙個不超過1e7的數字,兩個指紋數值之差越小,就說明兩個指紋越相似,當兩個指紋的數值差 k時,這兩個指紋的持有者會被系統判定為同乙個人。現在有3種操作,共m個,操作1 add x,表示為指...
9 1練習題6 高興的津津 題解
題目出處 洛谷 p3984 題目描述 津津上高中了。她在自己的媽媽的魔鬼訓練下,成為了乙個神犇,每次參加一次oi比賽必拿au虐全場。每次她拿到乙個au後就很高興。假設津津不會因為其它事高興,並且她的高興會持續t天 包包含獲獎當天。就算在高興的時候再次拿到au,他的高興也只能維持包括這次拿獎之日起t天...