藍橋杯 方格分割

標題:方格分割

6x6的方格,沿著格子的邊線剪開成兩部分。
要求這兩部分的形狀完全相同。

如圖:p1.png, p2.png, p3.png 就是可行的分割法。

試計算:
包括這3種分法在內,一共有多少種不同的分割方法。
注意:旋轉對稱的屬于同一種分割法。

請?zhí)峤辉撜麛?,不要填寫任何多余的內容或說明文字。

dfs 注意不是對格子進行DFS 是對分割線進行DFS 最后結果/4
除以4是因為 對于
000111
000111
000111
000111
000111
000111
從點3,3開始搜索 有兩種方法
111111
111111
111111
000000
000000
000000
這也也有兩種方法 它分割后的結果和上面是一樣的 加起來是四種

#include <stdio.h>
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <sstream>
#include <algorithm>
int N, M, K;
//const int MAXN = , MAXM = 0;
//typedef long long ll;
const int si = 7;
int ans = 0;
using namespace std;
int vis[si][si];
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};

void dfs(int x, int y) {
    if (x == 0 || y == 0 || x == N || y == N) {
        ans++;
        return;
    }
    
    for (int i = 0; i < 4; i++) {
        int a = x + dx[i];
        int b = y + dy[i];
        if (vis[a][b]) continue;
        int ra = N - a;
        int rb = N - b;
        vis[a][b] = vis[ra][rb] = 1;
        dfs(a, b);
        vis[a][b] = vis[ra][rb] = 0;
    }
    
}
int main() {
    N = 6;
    vis[3][3] = 1;
    dfs(3, 3);

    cout << ans / 4 <<endl;
    return 0;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、 購物單小明剛剛找到工作,老板人很好,只是老板夫人很愛購物。老板忙的時候經常讓小明幫忙到商場代為購物。小明很厭...
    _弓長_大人閱讀 881評論 0 0
  • 方格填數 填入0~9的數字。要求:連續(xù)的兩個數字不能相鄰。 (左右、上下、對角都算相鄰) 一共有多少種可能的填數方...
    掌灬紋閱讀 690評論 0 2
  • 一、動態(tài)規(guī)劃 找到兩點間的最短路徑,找最匹配一組點的線,等等,都可能會用動態(tài)規(guī)劃來解決。 參考如何理解動態(tài)規(guī)劃中,...
    小碧小琳閱讀 25,700評論 2 20
  • 在冷颼颼的風里 打著寒顫的它驚醒了 還有它的夢 美麗的夢 它絕望得飄落 緩緩的 慢慢的 誰說落葉歸根是美的景 難道...
    妹妹的鮮花餅閱讀 275評論 0 1
  • 今天本來想放馬蹄蓮的水彩教程,但是由于這幾天一直沒有沉下心來好好的去畫,導致現在還沒有完成。這幾天在畫的時候就在想...
    寧語隨記閱讀 1,109評論 0 12

友情鏈接更多精彩內容