首页 > 其他分享 >2067. 走方格

2067. 走方格

时间:2022-11-02 09:26:07浏览次数:92  
标签:cnt const int dfs 方格 && include 2067

2067. 走方格 - AcWing题库

第一眼就是暴搜2333
结果显而易见,卡数据了,9/10,最后一个过不了
DFS:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 35;
int n,m;
int cnt;
void dfs(int x,int y)
{
    if(x>n || y>m)return;
    if(x % 2 == 0 && y % 2 ==0) return;
    if(x==n && y==m)
    {
        cnt++;
        return;
    }
    dfs(x+1,y),dfs(x,y+1);
    
}
int main()
{
    cin >> n >> m;
    dfs(1,1);
    cout << cnt << endl;
}

BFS:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N = 35;
int n,m;
int cnt;
int dx[2]={0,1},dy[2]={1,0};
void bfs(int x,int y)
{
    queue<PII>q;
    q.push({x,y});
    while(q.size())
    {
        PII t = q.front();
        q.pop();
        for(int i=0;i<2;i++)
        {
            int x = t.x+dx[i],y=t.y+dy[i];
            if(x>n || y>m)continue;
            if(x % 2 == 0 && y % 2 ==0)continue;
            if(x==n && y==m)
            { 
                cnt++;
            }
            q.push({x,y});
        }
    }
}
int main()
{
    cin >> n >> m;
    bfs(1,1);
    cout << cnt << endl;
}

 

那么就要转变思路了,显然暴搜可以优化成dp

#include<iostream>
#include<algorithm>
using namespace std;
const int N =35;
int dp[N][N];
int n,m;

int main()
{
	cin >> n >> m;
	dp[1][1]=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		    if(i%2!=0 || j%2!=0)
			    dp[i][j]+=dp[i-1][j]+dp[i][j-1];
	cout << dp[n][m] << endl;
	return 0;
}

标签:cnt,const,int,dfs,方格,&&,include,2067
From: https://www.cnblogs.com/lxl-233/p/16849882.html

相关文章

  • 骨牌铺方格 SDUT
      状态转移方程:dp[i]=dp[i-1]+dp[i-2]。当前行,可能是由上一行转移过来的,那么当前行就只能横着铺,所以方案数是dp[i-1]。当前行,可能是由i-2行转移过来的,那......
  • 【XSY3997】方格计数(容斥,dp)
    题面方格计数题解拼命容斥即可。先考虑\(k=0\)的情况。首先先对对角线的限制容斥,即用“没有限制-正对角线没选-反对角线没选+正反对角线都没选”。设\(Z\)中对角......
  • BZOJ 1475(方格取数-递归sap完全+二分图最大点独立集MAXWVIS)
    1475:方格取数TimeLimit: 5Sec  MemoryLimit: 64MBSubmit: 409  Solved: 215[​​Submit​​][​​Status​​][​​Discuss​​]Description......
  • P1004 [NOIP2000 提高组] 方格取数
    P1004[NOIP2000提高组]方格取数题目描述设有\(N\timesN\)的方格图\((N\le9)\),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字\(0\)。如下图所示(......
  • NC17890 方格填色
    题目链接题目题目描述给一个mxn的方格,Applese想要给方格填上颜色,每个格子可以是黑色或者白色。他要求左右相邻两格不能同为白色且相邻两列不能全为黑色。求满足条件......
  • P1004 [NOIP2000 提高组] 方格取数 题解
    [NOIP2000提高组]方格取数题目描述设有\(N\timesN\)的方格图\((N\le9)\),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字\(0\)。如下图所示(见样例):......
  • C20220806T3 如何愉快地与方格玩耍
    给定\(n\timesn\)的黑白方格,期初所有颜色均为白色,支持以下操作翻转\([l,r]\)行/列的颜色翻转质数/合数行/列的颜色求\([l1,r1]\)行、\([l2,r2]\)列围成的区......
  • P7074 [CSP-J2020] 方格取数
    题目描述题目传送门()点击查看题目题目描述设有n*m的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格......