蓝桥杯 水水搜寻

蓝桥杯 水水搜索
#include <bits/stdc++.h>

using namespace std;
#define maxn 10

int vis[maxn][maxn] = {0};
int cnt = 0;

bool judge(int i, int j)
{
    if(i<4 && j<5) return true;
    return false;
}

void dfs(int i, int j)
{
    if(i==3 && j==4)
    {
        cnt++;
        for(int p=0; p<4; p++)
        {
            for(int q=0; q<5; q++)
                cout<<vis[p][q]<<" ";
            cout<<endl;
        }
        cout<<endl<<endl;
        return ;
    }
    if(!vis[i+1][j] && judge(i+1, j))
    {
        vis[i+1][j] = 1;
        dfs(i+1, j);
        vis[i+1][j] = 0;
    }
    if(!vis[i][j+1] && judge(i, j+1))
    {
        vis[i][j+1] = 1;
        dfs(i, j+1);
        vis[i][j+1] = 0;
    }
}

int main()
{
    dfs(0,0);
    cout<<cnt<<endl;
    return 0;
}