80求助
查看原帖
80求助
546558
Land_ER楼主2021/8/19 12:07

debug的时候前边都是对的,结果答案为什么不对啊~~(我是笨比)~~

#include<iostream>
using namespace std;

long long int dp[21];
const int list1[9]={0,2,1,-1,-2,-2,-1,1,2},list2[9]={0,1,2,2,1,-1,-2,-2,-1};
bool mark[21][21];
int n,m,x,y;

int main(void){
    int i,j,a,b;
    cin >> n >> m >> x >> y;

    for(i = 0;i < 21;++ i)
        for(j = 0;j < 21;++ j)
            mark[i][j] = false;

    for(i = 0;i < 21;++ i)
        dp[i] = 1;

    for(i = 0;i < 9;++ i)
    {
        a = x+list1[i];
        b = y+list2[i];
        mark[a][b] = (a>=0 && a<=n && b>=0 && b<=m);
    }

    for(i = 0;i <= n;i ++) if(mark[0][i]) dp[i] = 0;

    for(i = 1;i <= n;++ i)
    {
        for(j = 0;j <= m;++ j)
        {
            if(mark[i][j]) dp[j] = 0;
            else if(j > 0) dp[j] += dp[j-1];
        }
    }
    cout << dp[m];
}
2021/8/19 12:07
加载中...