Algorithm 公平分配规划问题的解决方案
自从我参加编码比赛以来,我就遇到了麻烦。我认为这个问题属于公平分配的范畴,但我不确定。 我正在处理这个问题 我已经拿出了一个经验公式,所以我成功地测试了3次迭代Algorithm 公平分配规划问题的解决方案,algorithm,Algorithm,自从我参加编码比赛以来,我就遇到了麻烦。我认为这个问题属于公平分配的范畴,但我不确定。 我正在处理这个问题 我已经拿出了一个经验公式,所以我成功地测试了3次迭代 我无法想出一个工作代码,可以解决这个编程问题。非常感谢您的帮助。在整个解决方案中,我使用A表示酒店,使用B表示房屋 让我们定义3种类型的安排: 以A|B结尾的安排,即左侧为酒店,右侧为房屋 以B|A结尾的安排,即房子在左边,酒店在右边 以B|B结尾的排列,即两边的房子 让我们分别表示各个阵列: 数组one[i]表示具有街道长度i 数组
我无法想出一个工作代码,可以解决这个编程问题。非常感谢您的帮助。在整个解决方案中,我使用
A
表示酒店,使用B
表示房屋
让我们定义3种类型的安排:
B
|A
结尾的安排,即房子在左边,酒店在右边B
|B
结尾的排列,即两边的房子- 数组
表示具有街道长度one[i]
i
- 数组
表示具有街道长度two[i]
i
- 数组
表示具有街道长度three[i]
i
1
时,任何类型1的布置均可延长,如下所示:
B
|A
A
|B
[A类型2排列]
B
|B
A
|B
[A类型3排列]
当街道长度增加1
时,任何类型2的布置均可延长,如下所示:
A
|B
B
|A
[类型1排列]
B
|B
B
|A
[A类型3排列]
当街道长度增加1
时,任何类型3的布置均可延长,如下所示:
A
|B
B
|B
[类型1排列]
B
|A
B
|B[类型2排列]
B
|B
B
|B
[第3类安排]
当街道长度为1
时:
1[1]=2[1]=3[1]=1
(如示例测试用例中所述)
当街道长度为i
时:
1[i]=2[i-1]+3[i-1]
2[i]=1[i-1]+3[i-1]
three[i]=1[i-1]+2[i-1]+three[i-1]
对于长度为n
的街道,您的答案是(一[n]+二[n]+三[n])%10^9+7
For n=1: result = 3
For n=2: result = 7
For n=3: result = 17
For n=4: result = 41
由于n
可能非常庞大,您需要为的值想出一个通用公式(一[n]+二[n]+三[n])%10^9+7
For n=1: result = 3
For n=2: result = 7
For n=3: result = 17
For n=4: result = 41
亲自验证以上结果
编辑:您可以使用矩阵求幂来找出O(logn)
时间中n
不同值的结果。查看更多详细信息
可以使用矩阵表示递归关系
(one[n+1]) = ( 0 1 1 ) (one[n])
(two[n+1]) ( 1 0 1 ) (two[n])
(three[n+1]) ( 1 1 1 ) (three[n])
使用这种表示法,可以通过矩阵指数(模10^9+7
)计算大型n
的值,使用平方指数。这将在O(logn)时间内给出结果
愉快的编码…从您的解决方案中,我认为解决这个问题最简单的方法是递归。你能建议吗?还是有更好的方法?更好的方法叫做快速矩阵求幂!!查看我答案中的链接非常感谢您的帮助。顺便问一下,这是否属于公平分配的范畴?实际上我不确定。简单地说,这是一个基于
安排和组合的问题。该解决方案还具有称为dynamic planning
的编程技术的特性,我们可以根据以前的值计算新值,就像:one[i]=two[i-1]+three[i-1]
awesome!谢谢顺便说一下,这是一个附带要求,我还有一个问题。您知道使用此处提供的CSV数据获取GDP的任何方法吗。我不知道用什么参数来评估GDP。每个国家有1345个参数,所以我不知道应该选择哪个。为什么我在这个问题上投了反对票?任何人,请帮助我理解,这样我就不会犯同样的错误。。。