每日程式設計題 03

2021-10-18 08:22:49 字數 3342 閱讀 4630

所有題目實現都是採用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....