讨论/技术交流/为什么一直不对,萌新求解/
为什么一直不对,萌新求解

一个3*7的网格,从1.1的位置到3.7有多少不同路劲,只能向下和向右,编译出来一直是2

#include <iostream>

using namespace std;

int startx = 1;
int starty = 1;
int num = 0;
int k;
int a[51][51];
void dfs(int x,int y)
{

int next[2][2] = {{0,1},
                   {1,0}};


if(startx == x && starty == y)
{
    num++;
    return ;
}
//k等于0时向右移动一位,当k等于1时向下移动一位
for(k = 0; k < 2;k++)
{
    startx += next[k][0];
    starty += next[k][1];


    if(startx > x || starty > y )
    {
        return ;
    }
    dfs(startx,starty);
}
return;

}

int main()
{
dfs(3,7);
cout << num << endl;
}

共 1 个回复

你的程序逻辑不正确,你可以在进入dfs函数的时候调试查看一下startx, starty, x, y的值。看看是否与你的预期一致。