计算机二级考试C++辅导:usaco4.3BuyLow,BuyLower动态规划

计算机二级考试C++辅导:usaco4.3BuyLow,BuyLower动态规划,第1张

计算机二级考试C++辅导:usaco4.3BuyLow,BuyLower动态规划,第2张

对于典型的动态编程,难点是第二步。cnt[i]表示以a[i]结尾的最长降序序列的物种数,那么
CNT[I]= count(len[k]+1 = = len[I]),1还有一个问题。如果生成的实际序列值相等,则计为一个,如果不相等,则next[i] = 0
如果计next[j]!=0 && next[j] < i,不会累加,因为j和I之间有数等于a[i],这样a[next[j]]就可以把a[j]
替换到同一个序列;同时积累的过程是指数级增长的,所以使用高精度
/*
Prog:buy low
lang:c++
ID:heben 991
*/
# include[/br
const int N = 6000,R = 10000,L = 250
int len[N],a[N],next[N];
struct bignum
{
int a[L];
int n;
bignum operator =(int b)
{
memset(a,0,sizeof(a));
n = 1;
a[1]= b;
}
bignum operator =(const bignum & b)
{
memset(a,0,sizeof(a));
for(int I = 1;i n = b.n
}
void print()
{
int I;
printf("%d ",a[n]);
for(I = n-1;I > = 1;- i) printf("%04d ",a[I]);
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 计算机二级考试C++辅导:usaco4.3BuyLow,BuyLower动态规划

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情