不用dp的方法 求助
查看原帖
不用dp的方法 求助
978554
155021lj楼主2023/8/27 20:01
#include<iostream>
using namespace std;
int bx, by, mx, my;
int temp[40][40];
int dx[2] = { 1,0 }, dy[2] = { 0,1 };
int total = 0;
void walk(int a, int b)
{
    if (a == bx && b == by) {  total++; return; }
    else
    {
        for (int i = 0; i <= 1; i++)
        {
            if (a + dx[i] <= bx && b + dy[i] <= by && temp[a + dx[i]][b + dy[i]] == 0)
            {
                temp[a][b] = 1;
                walk(a + dx[i], b + dy[i]);
                temp[a][b] = 0;
            }
        }
    }
}

int main()
{
    cin >> bx >> by >> mx >> my;
    bx+=2;by+=2;mx+=2;my+=2;
    temp[mx][my] = 1;
    temp[mx + 1][my + 2] = 1;
    temp[mx + 2][my + 1] = 1;
    temp[mx - 1][my + 2] = 1;
    temp[mx - 2][my + 1] = 1;
    temp[mx + 1][my - 2] = 1;
    temp[mx + 2][my - 1] = 1;
    temp[mx - 1][my - 2] = 1;
    temp[mx - 2][my - 1] = 1;
    walk(2, 2);
    cout << total << endl;
    return 0;
}

40分的代码求看,不知道这种方法为什么不能全部通过,哪里需要改呢,或者这种方法根本不能过,求大佬解释

2023/8/27 20:01
加载中...