题目描述
一个 N×M 的方格矩阵,每一个方格中包含一个字符 O 或者字符 X。
要求矩阵中不存在连续一行 3 个 X 或者连续一列 3 个 X。
问这样的矩阵一共有多少种?
输入描述
输入一行包含两个整数 N,M (1≤N,M≤5)。
输出描述
输出一个整数代表答案。
输入输出样例
示例
2 3
输出
49
运行限制
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static int n,m,ans=0;
static int[][] a;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
n=scan.nextInt();
m=scan.nextInt();
a=new int[n][m];
dfs(0,0);
System.out.println(ans);
scan.close();
}
public static void dfs(int x,int y){
if(x==n){
ans++;
return;
}
if((x<2||a[x-1][y]==0||a[x-2][y]==0)&&(y<2||a[x][y-1]==0||a[x][y-2]==0)){//设1代表X,0代表O,判断是否能放置X
a[x][y]=1;//在此坐标放置X
if(y<m-1){
dfs(x,y+1);
}
else{
dfs(x+1,0);
}
a[x][y]=0;
}
if(y<m-1){
dfs(x,y+1);
}
else{
dfs(x+1,0);
}
}
}
-
- 最大运行时间:1s
- 最大运行内存: 256M