FZU - 2107 Hua Rong Dao

来源:互联网 发布:javascript在线格式化 编辑:程序博客网 时间:2024/05/22 21:22

题目大意:给出n(1≤n≤4)然后在一个n * 4的格子上放矩形,必须放一个2*2的(为题目背景下的曹操),然后剩余的位置要用三种矩形拼接


解题思路:先枚举曹操的位置,然后用回溯的方式枚举出所有可能,计算总数

#include <cstdio>int A[5][5] = {0}, ans, n;void DFS(int i, int j) {if (i > n)ans++;else if (A[i][j])DFS(i + j / 4, j % 4 + 1);else {if (i < n && !A[i+1][j]) {A[i][j] = A[i+1][j] = 1;DFS(i, j);A[i][j] = A[i+1][j] = 0;}if (j < 4 && !A[i][j+1]) {A[i][j] = A[i][j+1] = 1;DFS(i, j);A[i][j] = A[i][j+1] = 0;}A[i][j] = 1;DFS(i, j);A[i][j] = 0;}}int main() {int T;scanf("%d", &T);while (T--) {ans = 0;scanf("%d", &n);for (int i = 1; i < n; i++)for (int j = 1; j < 4; j++) {A[i][j] = A[i+1][j] = 1;A[i][j+1] = A[i+1][j+1] = 1;DFS(1, 1);A[i][j] = A[i+1][j] = 0;A[i][j+1] = A[i+1][j+1] = 0;}printf("%d\n", ans);}return 0;}


0 0
原创粉丝点击