日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python输出方格_Python蓝桥杯练习 剪格子

發布時間:2025/3/20 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python输出方格_Python蓝桥杯练习 剪格子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

如下圖所示,3 x 3 的格子中填寫了一些整數。

+----+--+

|10 1|52|

+--***--+

|20|30 1|

*******--+

| 1| 2| 3|

+--+--+--+

我們沿著圖中的星號線剪開,得到兩個部分,每個部分的數字和都是60。

本題的要求就是請你編程判定:對給定的m x n 的格子中的整數,是否可以分割為兩個部分,使得這兩個區域的數字和相等。

如果存在多種解答,請輸出包含左上角格子的那個區域包含的格子的最小數目。

如果無法分割,則輸出 0。

輸入格式

程序先讀入兩個整數 m n 用空格分割 (m,n<10)。

表示表格的寬度和高度。

接下來是n行,每行m個正整數,用空格分開。每個整數不大于10000。

輸出格式

輸出一個整數,表示在所有解中,包含左上角的分割區可能包含的最小的格子數目。

樣例輸入1

3 3

10 1 52

20 30 1

1 2 3

樣例輸出1

3

樣例輸入2

4 3

1 1 1 1

1 30 80 2

1 1 1 100

樣例輸出2

10

思路

先計算所有格子之和,除以2就是limit值,遍歷的時候大于limit就不用繼續遍歷下去了,需要回溯;等于的時候記錄此時遍歷的格子數量,如果小于記錄的最小count,那么更新;如果小于limit,那么繼續遍歷。

從最左上角的格子開始,進行深度優先遍歷(dfs),利用遞歸可以很容易的做到

由于格子是3*3的,9個格子的話,全排列一下感覺數量級也不是很大,而且很多可以剪枝(要保證連通),沒有嘗試,感覺是可行的。

Python dfs源代碼

# 輸入格式

# 程序先讀入兩個整數 m n 用空格分割 (m,n<10)。

# 表示表格的寬度和高度。

# 接下來是n行,每行m個正整數,用空格分開。每個整數不大于10000。

m,n=map(int,input().split())

lst=[]

for i in range(n):

lst.append(list(map(int,input().split())))

visited=[[0 for i in range(m)]for j in range(n)]

all_sum=0

for i in range(n):

all_sum+=sum(lst[i])

limit=int(all_sum/2)

move=[[0,-1],[1,0],[0,1],[-1,0]]

def judge_border(lst,x,y):

if(x<0 or x>=len(lst)):

return False

if(y<0 or y>=len(lst[0])):

return False

return True

left=0

count=0

min_count=0

def dfs(lst,x,y,visited):

global move

global left

global limit

global count

global min_count

left+=lst[x][y]

visited[x][y]=1

count+=1

if(left

for i in range(4):

if(judge_border(lst,x+move[i][0],y+move[i][1])):

if(visited[x+move[i][0]][y+move[i][1]]==0):

dfs(lst,x+move[i][0],y+move[i][1],visited)

if(left==limit):

if(min_count==0 or count

min_count=count

visited[x][y]=0

count-=1

left-=lst[x][y]

dfs(lst,0,0,visited)

print(min_count)

總結

以上是生活随笔為你收集整理的python输出方格_Python蓝桥杯练习 剪格子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。