贪心算法,计算最长列连续的o字符长度,计数,然后一个一个减下去。
n, m, k = map(int, input().split())
matrix = []
for _ in range(n):
tmp = []
for each in input():
tmp.append(each)
matrix.append(tmp)
# 求最长连续0的长度
nums = [0] * (n+1)
for x in range(m):
counter = 0
for i in range(n):
if matrix[i][x] == "o":
counter += 1
else:
nums[counter] += 1
counter = 0
if matrix[-1][x] == "o":
nums[counter] += 1
def fun(nums, k):
result = 0
for i in range(n, 0, -1):
if nums[i] == 0:
continue
while nums[i] > 0:
if k <= i:
result = result + k - 1
return result
else:
result = result + i - 1
k = k - i
nums[i] -= 1
return result
print(fun(nums, k))



京公网安备 11010502036488号