显示代码纯文本
#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;
}