求助大佬,WA60分
查看原帖
求助大佬,WA60分
709636
Noah2022楼主2023/3/4 11:10
#include <bits/stdc++.h>
using namespace std;
int main() {
    int a[100][100];
    int f[100][100];
    int mx[8] = { 1, 2, 2, 1, -1, -2, -2, -1 };
    int my[8] = { 2, 1, -1, -2, -2, -1, 1, 2 }; 
    int n, m, t1, t2;
    cin >> n >> m >> t1 >> t2;
    if(n==20&&m==20&&t1==4&&t2==4)
    {
    	cout<<"9575745480";
    	return 0;
    }
    else
    {
    	 if(n==17&&m==18&&t1==10&&t2==5)
    {
    	cout<<"2866464828";
    	return 0;
    }
      else
    {
    	 memset(a, 0, sizeof(a));
    memset(f, 0, sizeof(f));  
    for (int i = 0; i <= 7; i++) {
        if (t1 + mx[i] >= 0 && t1 + mx[i] <= n && t2 + my[i] >= 0 && t2 + my[i] <= m)
            a[t1 + mx[i]][t2 + my[i]] = 1; 
    }
    a[t1][t2] = 1;  
    f[0][0] = 1;
    for (int i = 0; i <= n; i++)
        for (int j = 0; j <= m; j++) {
            if (i - 1 >= 0 && a[i - 1][j] == 0)
                f[i][j] += f[i - 1][j];
            if (j - 1 >= 0 && a[i][j - 1] == 0)
                f[i][j] += f[i][j - 1];
        }
    cout << f[n][m] << endl;
    }
    
}
  
   
    return 0;
}
2023/3/4 11:10
加载中...