Algorithm 最短路径问题的一种变体
有人能帮我解决这个问题吗?我所能想到的就是递归调用一个函数(但这似乎不起作用) 假设我从零开始,在每一步加上两个数字中的任何一个。所以,首先我可以把n1或n2加到零上;因此,新编号变为n1或n2,然后添加n1或n2中的任何一个 这样做,我如何才能确定是否达到某个数字,比如N?如果达到了这个数字,我怎么才能找到它达到N的最短路径(解决方案可能类似于n1,n1,n2)?这看起来更像是一个具有非负性约束的问题,而不是一个最短路径问题Algorithm 最短路径问题的一种变体,algorithm,shortest-path,Algorithm,Shortest Path,有人能帮我解决这个问题吗?我所能想到的就是递归调用一个函数(但这似乎不起作用) 假设我从零开始,在每一步加上两个数字中的任何一个。所以,首先我可以把n1或n2加到零上;因此,新编号变为n1或n2,然后添加n1或n2中的任何一个 这样做,我如何才能确定是否达到某个数字,比如N?如果达到了这个数字,我怎么才能找到它达到N的最短路径(解决方案可能类似于n1,n1,n2)?这看起来更像是一个具有非负性约束的问题,而不是一个最短路径问题 文章总结:如果d是n1和n2的最大公约数,那么只有当N是d的倍数时才
文章总结:如果d是n1和n2的最大公约数,那么只有当N是d的倍数时才有解。如果是,则有无穷多个解(包括最小的解),可以通过。你只需要做一点(哈!)额外的工作来确定在非负整数中是否存在最小解。(例如,2n1+3n2=1没有非负解。)排列数字,使n1>n2 从N(结果为M)重复子结构n2,直到M%n1=0和M>=0。这将给出最优解,N=(M/n1)*n1+rest*n2
如果您的算法在n1步后找不到M,则没有解。“当且仅当N是d的倍数时才有解”-不正确。检查n1=3 n2=4 N=5。@yi_H,3和4的GCD为1。5是1的倍数。@svick:是的,没有x和y,因此3x+4y=5,因此x和y是非负整数。因此,这有点错误。这不是iff,而是相反的含义。@harold,Ted说id的方式没有错。他说如果条件成立,就会有解决方案。但也许它们不是非负的,你必须把它作为第二步来理解。@harold-也许你把第二段开头的“then thas a solution”解释为OP问题的解决方案。我不是这个意思;这是指(无约束)线性丢番图方程的任何解。我想很明显,当时我是在总结这篇文章。