zoukankan      html  css  js  c++  java
  • 子串

    截图自齐神的题解

    预处理

    计算数组的空间,可以用sizeodf

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int a[2007][207][207];
     5 int b;
     6 int main(){
     7     int ans=sizeof(a);
     8     ans/=1024;
     9     ans/=1024;
    10     cout<<ans<<"MB"<<endl;
    11     return 0;
    12 }
    13 /*sizeof单位是Byte
    14 1TB=1024GB
    15 1GB=1024MB
    16 1MB=1024KB
    17 1KB=1024Byte*/ 

    我的h是选或不选,f是必须选

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 const int mod=1000000007;
     5 const int maxn=1007;
     6 const int maxm=207;
     7 int n,m,maxk;
     8 int f[3][maxm][maxm],h[3][maxm][maxm];
     9 char a[maxn],b[maxm];
    10 int main(){
    11     cin>>n>>m>>maxk;
    12     for(int i=1;i<=n;i++) cin>>a[i];
    13     for(int i=1;i<=m;i++) cin>>b[i];
    14     int now=1,past=0;
    15     h[0][0][0]=1;
    16     for(int i=1;i<=n;i++){
    17         h[now][0][0]=1;
    18         for(int j=1;j<=m;j++){
    19             for(int k=1;k<=maxk;k++){
    20                 if(a[i]==b[j]) f[now][j][k]=(f[past][j-1][k]+h[past][j-1][k-1])%mod;
    21                 else f[now][j][k]=0;
    22                 h[now][j][k]=(f[now][j][k]+h[past][j][k])%mod;
    23             }
    24         }
    25         swap(now,past);
    26     }
    27     cout<<h[n%2][m][maxk]%mod<<endl;
    28     return 0;
    29 } 
  • 相关阅读:
    使用母版页后台控制样式
    sql语句小综合
    sql拆分字段区分查询
    sql排名语句
    智力大冲浪(贪心)
    互斥的数(贪心)
    Crazy Search(hash)
    Frequent values(倍增RMQ)
    色板游戏(线段树)
    阶乘质因子分解(唯一分解定理)
  • 原文地址:https://www.cnblogs.com/lcan/p/9509972.html
Copyright © 2011-2022 走看看