zoukankan      html  css  js  c++  java
  • FZU 2170 花生的序列(动态规划)

    动态规划,转移方程为 dp[i][j] = (dp[i-1][j]+dp[i][j-1])%MOD,定义还是比较裸的,讨论一下就可以了

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    #define MOD 1000000007
    int dp[3010],v[3010];
    char str[6010];
    int main()
    {
    
        int t,i,j;
        int n;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            scanf("%s",str+1);
            dp[0] = 1;
            v[0] = 1;
            for(i=0; i<=n; i++)
                for (j=0; j<=n; j++)
                {
                    if(i==0 && j==0) continue;
                    int sum = 0;
                    if(str[i+j] == 'W')
                    {
                        if(i&1)
                            sum = (sum+v[j]) % MOD;
                        if(j&1)
                            sum = (sum+dp[j-1]) % MOD;
    
                        v[j] = dp[j] = sum % MOD;
                    }
                    else
                    {
                        if(i>0 && (i&1)==0)
                            sum = (sum+v[j]) % MOD;
                        if(j>0 && (j&1)==0)
                            sum = (sum + dp[j-1]) % MOD;
    
                        v[j] = dp[j] = sum % MOD;
                    }
                }
            printf("%d
    ",dp[n]);
        }
        return 0;
    }
  • 相关阅读:
    测试管理工具
    测试用例--zy
    测试计划和测试用例
    测试用例
    软件测试基础
    异步任务 ---- django-celery
    图片验证码接口
    测试作业
    数据库原理
    HTTPS原理
  • 原文地址:https://www.cnblogs.com/jifahu/p/5448997.html
Copyright © 2011-2022 走看看