0代表黑棋,1代表白棋,找出被白棋包圍的黑棋並吃掉,返回吃掉之後的結果
import sys
from copy import deepcopy
"""4
1101
1011
1001
1111
6101001
110100
111011
010101
111111
010100
41111
0101
1101
0010
"""def
get_zeros
(n):
zeros =
for idx in
range
(n):[0
]*n)
return zeros
defget_connected_domain
(data_matrix, pos, init_mask)
: init_mask[pos[0]
][pos[1]
]=1# left
if pos[0]
>
0and data_matrix[pos[0]
-1][pos[1]
]==0and init_mask[pos[0]
-1][pos[1]
]==0:
init_mask = get_connected_domain(data_matrix,
(pos[0]
-1, pos[1]
), init_mask)
# right
if pos[0]
<
len(data_matrix)-1
and data_matrix[pos[0]
+1][pos[1]
]==0and init_mask[pos[0]
+1][pos[1]
]==0:
init_mask = get_connected_domain(data_matrix,
(pos[0]
+1, pos[1]
), init_mask)
# up
if pos[1]
>
0and data_matrix[pos[0]
][pos[1]
-1]==
0and init_mask[pos[0]
][pos[1]
-1]==
0:init_mask = get_connected_domain(data_matrix,
(pos[0]
, pos[1]
-1), init_mask)
# down
if pos[1]
<
len(data_matrix)-1
and data_matrix[pos[0]
][pos[1]
+1]==
0and init_mask[pos[0]
][pos[1]
+1]==
0:init_mask = get_connected_domain(data_matrix,
(pos[0]
, pos[1]
+1), init_mask)
return init_mask
defconnected_domain
(data_matrix)
: n =
len(data_matrix)
zeros = get_zeros(n)
edge_connect_matrix_list =
# row 1
for idx in
range
(n):
if data_matrix[0]
[idx]==0
: connect_domain = get_connected_domain(data_matrix,(0
,idx)
, deepcopy(zeros)
)for idx in
range
(n):
if data_matrix[n-1]
[idx]==0
: connect_domain = get_connected_domain(data_matrix,
(n-1
,idx)
, deepcopy(zeros)
)if n >2:
for idx in
range
(n-2):
if data_matrix[idx+1]
[0]==
0:connect_domain = get_connected_domain(data_matrix,
(idx+1,
0), deepcopy(zeros)
)for idx in
range
(n-2):
if data_matrix[idx+1]
[n-1]==
0:connect_domain = get_connected_domain(data_matrix,
(idx+
1,n-1)
, deepcopy(zeros)
) total_connect = get_zeros(
len(data_matrix)
)for m in edge_connect_matrix_list:
for row_idx, row in
enumerate
(m):
for c_idx, d in
enumerate
(row)
: total_connect[row_idx]
[c_idx]
+= d
for row_idx, row in
enumerate
(total_connect)
:for c_idx, d in
enumerate
(row)
:if d ==
0and data_matrix[row_idx]
[c_idx]==0
: data_matrix[row_idx]
[c_idx]=1
return data_matrix
if __name__==
"__main__"
: n = sys.stdin.readline(
).strip(
) n =
int(n)
data_list =
for idx in
range
(n):
line = sys.stdin.readline(
).strip(
) line =
[int
(d)for d in line]
result = connected_domain(data_list)
for l in result:
print
(' '
.join(
[str
(_l)
for _l in l]
))
該程式只通過65%,應該還有問題,題意理解不夠全面。 筆試程式設計題彙總 2
描述 給乙個整數陣列num,和乙個鎮整數k,能否把陣列num切成k個子集,且各個子集的和相等,返回布林型別 輸入輸出 輸入 乙個整數陣列num和乙個正整數k 輸出 返回true或者false,bool型別 樣例 輸入 4,3,2,3,5,2,1 4 輸出 true 解釋 可以分解為4個子集,他們的和...
筆試程式設計題彙總 6
給乙個長度為n的整數陣列,將這個陣列分成m段,每一段的和為這一段的權重,所有段的權重的最大值為這次分割的權重,求所有分割中最小的權重 輸入描述 第一行是兩個整數,表示n,m m n 第二行數n個空格分割的整數 輸出 輸出所有分割中最小的權重 樣例 input 5 31 4 2 3 5 output ...
筆試 程式設計題
1.class a class b public a int main 2.int main 3.int func int a int main little endian int main char p char a 2 printf 0x x,0x x,0x x p 1 p,short p re...