2019\National _C_C++_C\试题 B: 递增序列
生活随笔
收集整理的這篇文章主要介紹了
2019\National _C_C++_C\试题 B: 递增序列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【問題描述】
對于一個字母矩陣,我們稱矩陣中的一個遞增序列是指在矩陣中找到兩個字母,它們在同一行,同一列,或者在同一 45 度的斜線上,這兩個字母從左向右看、或者從上向下看是遞增的。
例如,如下矩陣中
LANN
QIAO
有LN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、AN 等 13 個遞增序列。
注意當兩個字母是從左下到右上排列時,從左向右看和從上向下看是不同的順序。
對于下面的 30 行 50 列的矩陣,請問總共有多少個遞增序列?(如果你把
以下文字復制到文本文件中,請務必檢查復制的內容是否與文檔中的一致。在試題目錄下有一個文件 inc.txt,內容與下面的文本相同)
【答案提交】
這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一
個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分。
暴力
就是直接遍歷所有的字母,因為只判斷兩個字母從左向右看、或者從上向下看是遞增的,所有每個位置的八個方向中只需要判斷其中五個就可以。
Python
content = [] with open("./inc.txt") as fp:for line in fp.readlines():content.append(list(line.strip()))ans, dirs = 0, [(1, 0), (0, 1), (1, 1), (1, -1), (-1, 1)] for i in range(len(content)):for j in range(len(content[0])):ch = content[i][j]for dx, dy in dirs:x, y = i, jwhile True:x += dxy += dyif x < 0 or y < 0 or x >= len(content) or y >= len(content[x]):breakif content[x][y] > ch:ans += 1 print(ans)Answer:52800
總結
以上是生活随笔為你收集整理的2019\National _C_C++_C\试题 B: 递增序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue事件总线(EventBus)
- 下一篇: 2019\National _C_C++