问题描述
问题
假设你有一个像这样的 m * n 矩阵:
Grid = 4 * 4
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
你想从左上角连接到右下角,你只能向右或向下。此外,您还想找到获得所需总和所需的操作。
例如:
在教科书中找到的脚本,不清楚
def move(m,n,sum):
count = m + n - 1
max_val = m
s = sum
r = []
while max_val > 0:
if count <= 0:
return False,r
least = max_val * ((max_val - 1) / 2)
r.append(max_val)
s -= max_val
count -= 1
while ((count > 0) and (s > least + (count - (max_val - 1)) * (max_val - 1))):
r.append(max_val)
s -= max_val
count -= 1
if s < least:
return False,r
max_val -= 1
return True,r
def combine(m,sum):
result,new_res = move(m,sum)
new_res.reverse()
for i in range(1,len(new_res)):
if new_res[i] == new_res[i - 1]:
print("R")
else:
print("D")
combine(4,4,16)
我不太明白解决方案。
有人能解释一下算法吗?
特别是在函数 move 中,它在 while 循环中执行此检查:
while ((count > 0) and (s > least + (count - (max_val - 1)) * (max_val - 1))):
问题
- 这个算法的名称是什么?
- 这个脚本是如何工作的?
- 运行时间(时间复杂度)是多少?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)