avatar
r*8
1
两海盗在分金币,金币放在N个瓶子里, 每个瓶子放有金币,瓶子放在一排,两海盗
都知道每个瓶子放的金币数目,分的规则是这样的,每个海盗呢只也取边上的一个瓶子
,第一个,或最后一个。
请你写一算法,帮其中一海盗获得最可以多的金币,前提是两海盗可是一样的聪明啊。
给出算法复杂度,能用O(N*N)写出吗?
avatar
x*o
2
avatar
x*p
3
Using recursive.
Suppose an array A of integers is given to hold all golden pieces. Its index
is from 0 to N-1.
Let function f(int startIndex, int endIndex) returns the maximum money you
can get.
int f(A, int startIndex, int endIndex) {
int sum = summation from A[startIndex] to A[endIndex];
if (startIndex==endIndex) return A[startIndex];
int choice1 = sum - f(A, startIndex+1, endIndex);
int choice2 = sum - f(A, startIndex, endIndex-1);
return (choice1>choice2?choice1:choice2)
}
run f(A, 0, N-1)
avatar
r*u
4
DP, 最近讨论过,考古一下.

【在 r***8 的大作中提到】
: 两海盗在分金币,金币放在N个瓶子里, 每个瓶子放有金币,瓶子放在一排,两海盗
: 都知道每个瓶子放的金币数目,分的规则是这样的,每个海盗呢只也取边上的一个瓶子
: ,第一个,或最后一个。
: 请你写一算法,帮其中一海盗获得最可以多的金币,前提是两海盗可是一样的聪明啊。
: 给出算法复杂度,能用O(N*N)写出吗?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。