AcWing 291. 蒙德里安的梦想java
原题链接
中等
作者:
莫得感情的刷题机器
,
2020-08-16 15:25:03
,
所有人可见
,
阅读 523
java
java 代码
import java.util.*;
public class Main{
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
while(true){
int n=sc.nextInt();
int m=sc.nextInt();
if(m==0||n==0) break;
boolean [] st=new boolean[1<<n];
for(int i=0;i<1<<n;i++){
int count=0;
st[i]=true;
for(int j=0;j<n;j++){
if((i>>j&1)==1){
if((count&1)==1) st[i]=false;
count=0;
}else count++;
}
if((count&1)==1) st[i]=false;
}
long [][] f=new long[m+2][1<<n+1];
f[0][0]=1;
int a=1<<n;
for(int i=1;i<=m;i++){
for(int j=0;j<a;j++){
for(int k=0;k<a;k++){
if((k&j)==0&&st[k|j]){
f[i][j]+=f[i-1][k];
}
}
}
}
System.out.println(f[m][0]);
}
}
}