码迷,mamicode.com
首页 > 其他好文 > 详细

关于dp初始化问题

时间:2019-06-19 00:41:44      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:UNC   set   滚动   space   mem   第一个   ken   its   tor   

 

// 前缀和dp优化1
#include<bits/stdc++.h>
using namespace std;

int main()
{
    for(int u=1,i=1;i<=n;i++)
    {
       while(s[i]-s[u]>le) u++;
       p[i]=u;    
    }
    for(int i=1;i<=n&&s[i]<=le;i++) f[0][i]=1;
    for(int j=1;j<=m;j++) 
{
    for(int i=1;i<=n;i++) sum[i-1][j]=sum[i-1][j-1]+f[i-1][j];
    for(int i=1;i<=n;i++)  f[i][j]=.....

}

//滚动数组DP赋初值  nkoj  noip 2015 字串

for(int i=0;i<=n;i++)
{ f[0][i][0]=1;
sum[0][i][0]=1;
}
for(int t=1;t<=k;t++)
{
memset(f[t&1],0,sizeof(f[t&1]));
memset(sum[t&1],0,sizeof(sum[t&1]));
   for(int i=1;i<=n;i++)
      for(int j=1;j<=m;j++)
        {
       
        if(a[i-1]==b[j-1])
        {
        f[t&1][i][j]=sum[(t-1)&1][i-1][j-1]%mod;
        if(a[i-2]==b[j-2])
        {
        f[t&1][i][j]=(f[t&1][i][j]+f[t&1][i-1][j-1])%mod;
        }
       
               
        } sum[t&1][i][j]=sum[t&1][i-1][j]%mod+f[t&1][i][j]%mod;
    }
        }
cout<<sum[k&1][n][m]%mod<<endl;


 

//滚动数组初始化2

在循环内赋初值

//前缀和赋初值2

第一个或第0个赋初值

 

关于dp初始化问题

标签:UNC   set   滚动   space   mem   第一个   ken   its   tor   

原文地址:https://www.cnblogs.com/OIEREDSION/p/11048549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!