c++出了个迷惑的bug求调
查看原帖
c++出了个迷惑的bug求调
1029721
AnsonIsTheBest楼主2024/10/30 11:21
#include <iostream>
using namespace std;
long long n,m,a,b;
long long girds[25][25];
long long calc(long long x,long long y)
{
    if (girds[x][y] ==-100)
    {
      if ((x==a&y==b)||(x==a-2&&y==b-1)||(x==a-2&&y==b+1)||(x==a-1&&y==b-2)||(x==a-1&&y==b+2)||(x==a+1&&y==b-2)||(x==a+1&&y==b+2)||(x==a+2&&y==b-1)||(x==a+2&&y==b+1))
        {
            girds[x][y]=0;
            return 0;
        }
        if (x==0&&y==0)
        {
            girds[x][y]=1;
            return 1;
        }
        else if (x==0)
        {
            girds[x][y]=calc(x,y-1);
            return calc(x,y-1);
        }
        else if (y==0)
        {
            girds[x][y]=calc(x-1,y);
            return calc(x-1,y);
        }
        else
        {
            girds[x][y]=calc(x-1,y)+calc(x,y-1);
            return calc(x-1,y)+calc(x,y-1);
        }
    }
    else
    {
        return girds[x][y];
    }
}
int main()
{
    cin>>n>>m>>a>>b;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
        {
            girds[i][j]=-100;
        }
    }
    
    int map[n][m];
    for (int i=0;i<=n;i++)
    {
        for (int j=0;j<=m;j++)
        {
            map[i][j]=calc(i,j);
            cout<<map[i][j]<<" ";
        }
        cout<<endl;
    }
    
    cout<<calc(n,m);
}

输入

6 6 3 3

输出

1 1 1 1 1 1 0

1 2 0 1 0 1 0

1 0 0 1 1 0 0

1 1 1 0 1 1 0

1 0 1 1 2 0 0

1 1 0 1 0 0 0

0 0 0 0 0 0 0

0

为啥最右边和最下面都是0

2024/10/30 11:21
加载中...