• 滚动数组出错的原因都有那些?&poj3254


      欢迎留下你的见解 ^-^ ~~

    #include <algorithm>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <queue>
    
    using namespace std;
    
    const int maxn=12+5;
    const int maxm=12+5;
    
    int n,m,tot;
    int state[380],stanum[380];
    int in[maxm];
    bool flg[maxn];
    //char s[maxn][maxm];
    
    void dfs(int cur,int st,int count)
    {
        if(cur==n)
        {
            state[tot]=st;
            stanum[tot++]=count;
            return;
        }
        flg[cur+1]=0;
        dfs(cur+1,st<<1,count);
        if(flg[cur]==0)
        {
            flg[cur+1]=1;
            dfs(cur+1,st<<1|1,count+1);
        }
    }
    
    void init()
    {
        tot=0;
        memset(flg,0,sizeof(flg));
        dfs(0,0,0);
    }
    
    void data_in()
    {
        int tmp;
        for(int i=1;i<=m;i++)
        {
            in[i]=0;
            for(int j=1;j<=n;j++)
            {
                scanf("%d",&tmp);
                in[i]=in[i]*2+tmp^1;
            }
        }
    }
    
    int dp[2][380];//滚动数组wa了,非滚动ac
    void DP()
    {
        memset(dp,0,sizeof(dp));
        for(int i=0;i<tot;i++)
        {
            if(in[1]&state[i]) continue;
            dp[1][i]=1;
        }
        for(int i=2;i<=m;i++)
        {
            for(int j=0;j<tot;j++)
            {
                if(in[i]&state[j]) continue;
                else for(int k=0;k<tot;k++)
                {
                    if(state[j]&state[k]) continue;
    //                else dp[i][j]=(dp[i][j]+dp[i-1][k])%100000000;
                    else dp[i%2][j]=(dp[i%2][j]+dp[(i-1)%2][k])%100000000;
                }
            }
        }
        int ans=0;
        for(int i=0;i<tot;i++)
    //        ans=(ans+dp[m][i])%100000000;
            ans=(ans+dp[m%2][i])%100000000;
        printf("%d\n",ans);
    }
    
    int main()
    {
        while(~scanf("%d %d",&m,&n))
        {
            init();
            data_in();
            DP();
        }
        return 0;
    }
    View Code
    勸君惜取少年時&莫待無花空折枝
  • 相关阅读:
    函数详解
    print()函数知识点总结
    python基本数据类型-字符串常用操作
    2020.7.17第十二天
    2020.7.16第十一天
    2020.7.15第十天
    2020.7.14第九天
    2020.7.13第八天
    2020.7.12第七天
    2020.7.11第六天
  • 原文地址:https://www.cnblogs.com/RainingDays/p/3084140.html
Copyright © 2020-2023  润新知