所有題目實現都是採用python
在乙個m行n列的矩陣中,如果查詢到乙個元素為「0」,將其所在的行和列的元素都設為「0」.
需要考慮乙個記錄矩陣,一般都會考慮m行n列的,但是可以行列分開考慮,這樣會減少空間複雜度,只需要(m+n).
def
myzero
(matrix)
: m =
[none]*
len(matrix)
n =[none]*
len(matrix[0]
)# 行、列標記
for i in
range
(len
(m))
:for j in
range
(len
(n))
:if matrix[i]
[j]==0:
m[i]=1
n[j]=1
for i in
range
(len
(m))
:for j in
range
(len
(n))
:if m[i]==1
or n[j]==1
: matrix[i]
[j]=
0matrix =[[
1,1,
1,1,
1,0,
1,1,
1,1]
,[1,
1,1,
1,1,
1,1,
1,1,
1],[
1,1,
0,1,
1,1,
1,1,
1,1]
,[1,
1,1,
1,1,
1,1,
1,1,
1],[
1,1,
1,1,
1,1,
1,1,
1,1]
]myzero(matrix)
for x in matrix:
print
(x, sep=
" ")
從命令列讀取乙個奇數n,列印出n行n列的幻方,幻方包含1到n
2n^2
n2的所有數字,每個數字只用一次。幻方的各個行之和和各個列之和以及對角線之和都相等。
有規律可以自己搜尋了解,首先是確定數字1的位置,在最後一行的中間,2在後一行後一列,若當前位置有數,則落在前一行相同位置。(自己搜尋了解)。
兩個點在程式中需要注意:
這兩個判斷完成,程式也就完成.
def
magic_square
(n):
# 產生n*n大小陣列,並放入1
magic =[[
0]* n for i in
range
(n)]
row = n -
1 col = n //
2 magic[row]
[col]=1
# 放其他數 規律可以自己搜尋
for i in
range(2
, n*n+1)
: try_row =
(row +1)
% n try_col =
(col +1)
% n if
(magic[try_row]
[try_col]==0
):row = try_row
col = try_col
else
: row =
(row -
1+ n)
% n magic[row]
[col]
= i
for i in magic:
print
(i, sep=
' ')
magic_square(
3)
每行每列每個塊的數不重複
使用二進位制進行操作
也是兩個判斷 判斷該位置是否為空;判斷該數是否重複
def
shudu
(matrix)
:"輸入乙個矩陣,判斷是否滿足數獨的條件"
n =len(matrix)
result_row = result_col = result_block =
0for i in
range
(n):
# 行 result_row = result_col = result_block =
0for j in
range
(n):
temp = matrix[i]
[j]if
(result_row &(1
<<
(temp-1)
)==0)
: result_row = result_row |(1
<<
(temp-1)
)else
:print
('wrong'
,i,j)
return
false
# 列 temp = matrix[j]
[i]if
(result_col &(1
<<
(temp-1)
)==0)
: result_col = result_col |(1
<<
(temp-1)
)else
:print
('wrong'
,j,i)
return
false
# 塊 block_row =
(i//3)
*3+ j//
3 block_col =
(i%3)*
3+ j%
3 temp = matrix[block_row]
[block_col]
if(result_block &(1
<<
(temp -1)
)==0)
: result_block = result_block |(1
<<
(temp -1)
)else
:print
('wrong'
, block_row,block_col)
每日程式設計題 06
所有題目還是採用python進行解答的哦!今天的題目相對來說比較簡單,也有很多種解決方法,我只是給出了一些方法,大家可以多多查查,希望一起交流學習。def forsolve n for迴圈 s 1if n 0 return 1else for i in range 1 n 1 s i return ...
每日程式設計題 10
所有題目均採用python進行完成 def binary search num,target 判斷是否為空 iflen num 0 return 1 left 0 right len num 1 while left 1 right mid left right 2 if num mid targe...
每日程式設計題 11
題目均採用python進行完成 已知供暖裝置和房屋的位置,給出供暖裝置的最小半徑 注意 供暖裝置需要排序 可以使用python中的bisect找到需要插入的索引值 from bisect import bisect deffind radius house,heater 供暖裝置排序 heater....