1 条题解

  • 0
    @ 2025-10-10 19:52:16

    C :

    #include <stdio.h>
    #include <stdlib.h>
    #define MOD  100000000
    int ans, f[13][5000], p[13], v[13], n, m, x, maxx;
    void dp(){
    for(int i = 0;i <= maxx; i++){
        if((i|v[1])==v[1]&&(i&(i<<1))==0)f[1][i]=1;
    }
    for(int i = 2;i <= n; i++){
        for(int j = 0;j <= maxx; j++){
            if(f[i-1][j]){
               for(int k = 0;k <= maxx; k++){
                    if((k&j)==0&&(k|v[i])==v[i]&&(k&(k<<1))==0){
                        f[i][k]=(f[i][k]+f[i-1][j])%MOD;
                    }
               }
            }
        }
    }
    for(int i = 0;i <= maxx; i++)ans=(ans+f[n][i])%MOD;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        maxx=(1<<m)-1;
        for(int i = 1;i <= n; i++) {
            for(int j = 1;j <= m; j++) {
                scanf("%d",&x);
                v[i]<<=1;v[i]+=x;
            }
        }
        dp();
        printf("%d\n",ans);
        return 0;
    }
    

    C++ :

    #include<cstdio>
    using namespace std;
    int f[13][401]={0};
    int v[13][401];//第i行第j个状态的值 
    bool Map[13][13]={0};
    int M,N;
    
    void Dfs(int x,int y,int w)
    {
    	if(y>N)
    	{
    		v[x][++v[x][0]]=w;	
    		return;
    	} 
    	
    	Dfs(x,y+1,w<<1);
    	
    	if(Map[x][y] && !(w&1))
    	{
    		Dfs(x,y+1,(w<<1)+1);
    	}
    } 
    int main()
    {	
    	scanf("%d%d",&M,&N);
    	
    	for(int i=1;i<=M;++i)
    	{
    		for(int j=1;j<=N;++j)
    		{
    			scanf("%d",&Map[i][j]);
    		}
    		Dfs(i,0,0);
    	}
    	
    	for(int i=1;i<=v[1][0];++i) f[1][i]=1;
    	
    	for(int i=2;i<=M;++i)
    	{
    		for(int j=1;j<=v[i][0];++j)
    		{
    			for(int k=1;k<=v[i-1][0];++k)
    			{
    				if((v[i][j]&v[i-1][k])==0)
    				{
    					f[i][j]+=f[i-1][k];
    					f[i][j]%=100000000;
    				}
    			}
    		}
    	}
    	
    	int sum=0;
    	for(int i=1;i<=v[M][0];++i)
    	{
    		sum+=f[M][i];
    		sum%=100000000;
    	}
    	
    	printf("%d",sum%100000000);
    
    	
    	return 0;
    }
    
    • 1

    信息

    ID
    1074
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者