问题标题: 酷町堂:3596求助

0
0
已解决
吉逸轩
吉逸轩
初级光能
初级光能

题目链接: 酷町堂:3596

#include<bits/stdc++.h>

using namespace std;

int cb[5][9];

int count=0;

int dx[4] = {2, 1, -1, -2};

int dy[4] = {1, 2, 2, 1};

void h(int x, int y, int dx, int dy)

{

    if(x>=0 && x<5 && y>=0 && y<9 && cb[x][y]==0)

    {

        if(x == dx-1 && y == dy-1)

        {

            count++;

            return;

        }

        cb[x][y] = 1;

        int i;

        for(i=0; i<4; ++i)

        {

            h(x+dx[i], y+dy[i], dx, dy);

        }

        cb[x][y] = 0;

    }

}

int main()

{

    int m, n;

    cin>>n>>m;

    h(0, 0, m, n);

    cout<<count;

    return 0;

}


0
已采纳
陈泽睿
陈泽睿
高级光能
高级光能

设方案数为t 
函数是这样的  
void dfs(int x,int y)
边界:x<0||x>n||y>m
如果到了点(m,n) t++;
否则分别搜索(x+1,y+2) (x+2,y+1) (x-2,y+1) (x-1,y+2)
主函数中dfs(0,0)后输出t 

0
我要回答