记录编号 597625 评测结果 AAAAAAAAAA
题目名称 [POJ2411] Mondriaan's Dream 最终得分 100
用户昵称 Gravatar健康铀 是否通过 通过
代码语言 C++ 运行时间 3.477 s
提交时间 2024-12-06 21:36:42 内存使用 3.62 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long f[15][1<<11],d[500010],top,n,m,ans,ds[1<<11],dp[15][15];
int main(){
	freopen("examfive.in", "r", stdin);
  freopen("examfive.out", "w", stdout);
	for(int u=1;u<=11;u++){
		for(int v=1;v<=11;v++){
		memset(f,0,sizeof(f));
		memset(ds,0,sizeof(ds));
	n=u,m=v;
	for(int i=0;i<(1<<m);i++){
		int cnt=0,p=1;
		for(int j=0;j<=m-1;j++){
			if(((1<<j)&i)==0)
			cnt++;
			else{
				if((cnt&1)!=0){
					p=0;
					break;
				}
				cnt=0;
			}
		}
		if((cnt&1)!=0||p==0)
		continue;
		ds[i]=1;
		d[++top]=i;
	}
	f[0][0]=1;
	for(int i=0;i<=n-1;i++){
		for(int j=0;j<(1<<m);j++){
			for(int k=0;k<(1<<m);k++){
				if((j&k)==0&&ds[j|k]==1){
					f[i+1][k]+=f[i][j];
				}
			}
		}
	}
	dp[n][m]=f[n][0];
}
    }
    while(1){
    	cin>>n>>m;
    	if(n==m&&n==0)
    	break;
    	cout<<dp[n][m]<<endl;
	}
	return 0;
}