洛谷 P3654 First Step (ファーストステップ) python解析

First Step (ファーストステップ)

日期:2023.9.11
题目地址:First Step

题目分析

一拿到这个题目,应该就可以用暴力枚举。
从一个点向右或向下搜索k位,如果没有障碍物就代表ans+1。
注意:有个特例就是当k=1时,这个横向纵向重复了,所以最后的结果ans/2。

代码

r, c, k = map(int, input().split())

li = []
for _ in range(r):
    li.append(list(input().strip()))

ans = 0
# 横向搜索
for i in range(r):       
    for j in range(c):
        flag = True
        for s in range(k):
            # 判断防止越界
            if j+s > c-1:
                flag = False
                break
            if li[i][j+s] != '.':
                flag = False
                break
        if flag == True:
            ans += 1

# 纵向搜索            
for i in range(r):
    for j in range(c):
        flag = True
        for s in range(k):
            # 判断防止越界
            if i+s > c-1:
                flag = False
                break
            if lip[i+s][j] !=.:
                flag = False
                break
        if flag == True:
            ans += 1
            
# 考虑到特殊情况像k=1时就有可能出现重复的情况。
if k == 1:
    print(ans//2)
else:
    print(ans)

你可能感兴趣的:(#,算法学习的小记录,python,算法)