BZOJ1259:[CQOI2007]矩形rect(DFS)

Description

给一个a*b矩形,由a*b个单位正方形组成。你需要沿着网格线把它分成分空的两部分,每部分所有格子连通,且至少有一个格子在原矩形的边界上。“连通”是指任两个格子都可以通过水平或者竖直路径连在一起。 求方案总数。例如3*2的矩形有15种方案。

 

Input

输入仅一行,为两个整数a,b。
1<=a<=6, 2<=b<=7

Output

输出仅一行,即方案总数。

Sample Input

3 2

Sample Output

15

Solution

爆搜分界线可过= =
亏我以为有什么神奇的规律还找了半天

Code

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 
 6 int dx[7]={0,1,0,-1,0},dy[7]={0,0,1,0,-1};
 7 int n,m,ans,vis[10][10];
 8 
 9 void Dfs(int x,int y)
10 {
11     if (x==0 || x==n || y==0 || y==m) ans++;
12     else
13     {
14         vis[x][y]=true;
15         for (int i=1; i<=4; ++i)
16             if (!vis[x+dx[i]][y+dy[i]])
17                 Dfs(x+dx[i],y+dy[i]);
18         vis[x][y]=false;
19     }
20 }
21 
22 int main()
23 {
24     scanf("%d%d",&n,&m);
25     for (int i=1; i<n; ++i)
26     {
27         memset(vis,false,sizeof(vis));
28         vis[i][0]=true; Dfs(i,1);
29     }
30     for (int i=1; i<m; ++i)
31     {
32         memset(vis,false,sizeof(vis));
33         vis[0][i]=true; Dfs(1,i);
34     }
35     printf("%d\n",ans);
36 }

转载于:https://www.cnblogs.com/refun/p/9806390.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值