第十四屆藍橋杯第一期模擬賽 python
from re import L
n,m = map(int, input().split())
M = []
for _ in range(n):
M.append(input())
ans = 0 # 計數 LQ三角形
# 定義函式,檢視是否是LQ三角形,一共有四種
# 因為一共有4個方向,兩兩相鄰的組合,一共是四種情況
def check(x,y,a,b,d):
if d == 0:
# _|的情況
# x,y 為左頂點
# a,b 為上頂點
while x >= a and y <= b:
if M[a][b] != M[x][y]: return False
x -= 1
y += 1
elif d == 1:
# |_的情況
# x,y 為右頂點
# a,b 為上頂點
while x >= a and y >= b:
if M[a][b] != M[x][y]: return False
x -= 1
y -= 1
elif d == 2:
# -|的情況
# x,y 為左頂點
# a,b 為下頂點
while x <= a and y <= b:
if M[a][b] != M[x][y]: return False
x += 1
y += 1
elif d == 3:
# |-的情況
# x,y 為右頂點
# a,b 為下頂點
while x <= a and y >= b:
if M[a][b] != M[x][y]: return False
x += 1
y -= 1
return True
for i in range(n):
for j in range(m):
up,down,left,right = 0,0,0,0
# 得到上下左右相等的最大的數,利用四個while迴圈
while (i - up) >=跟單網gendan5.com 0 and M[i][j] == M[i-up][j]:
up +=1
while (i + down) < n and M[i][j] == M[i+down][j]:
down +=1
while (j - left) >= 0 and M[i][j] == M[i][j-left]:
left +=1
while (j + right) < m and M[i][j] == M[i][j+right]:
right +=1
# _|的情況
for k in range(1,min(up,left)):
# 左頂點座標(i,j-k),上頂點座標(i-k,j)
if check(i,j-k,i-k,j,0):
ans += 1
# |_的情況
for k in range(1,min(up,right)):
# 右頂點座標(i,j+k),上頂點座標(i-k,j)
if check(i,j+k,i-k,j,1):
ans += 1
# -|的情況
for k in range(1,min(down,left)):
if check(i,j-k,i+k,j,2):
ans += 1
# |-的情況
for k in range(1,min(down,right)):
if check(i,j+k,i+k,j,3):
ans += 1
print(ans)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2926017/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 第十四屆藍橋杯大賽軟體賽省賽Python 《三國遊戲》Python遊戲
- 【藍橋杯考前突擊】第十一屆藍橋杯校賽模擬C/C++ 正整數序列C++
- 【計蒜客】2017藍橋杯模擬賽(四)
- 第14屆藍橋杯B組國賽
- 第十三屆藍橋杯省賽A組
- 【藍橋杯】計蒜客2017模擬賽A習題整理
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 第六屆藍橋杯省賽CC++B組C++
- 太陽(藍橋杯14屆)
- 藍橋杯模擬題——長草問題
- 第十五屆藍橋杯 網路安全賽道 ezjavaJava
- 藍橋杯第五屆省賽題目及題解
- 第九屆藍橋杯B組省賽———乘積最大
- 歷屆藍橋杯省賽(C、C++)的答案(轉)C++
- 藍橋杯javaB組備賽Java
- 第十三屆藍橋杯省賽C/C++ B組C++
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 第十一屆藍橋杯大賽第二次模擬(軟體類)真題(做題筆記)筆記
- 第十五屆藍橋杯C++B組省賽總結C++
- 2015年藍橋杯六屆省賽大學B組真題
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 2018藍橋杯省賽B組
- 2017省賽藍橋杯B組
- 藍橋杯大賽——驅動程式
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 第九屆藍橋杯省賽C++A組 倍數問題(dfs)C++
- 藍橋杯模板(二)python組Python
- 藍橋杯模板(三)python組Python
- 藍橋杯
- [藍橋杯2018決賽]最大乘積
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 【藍橋杯】試題 歷屆試題 剪格子(python解法+java解法)PythonJava
- 2021藍橋杯(Python)騙分指南Python
- 藍橋杯第9場小白入門賽