总有两个答案是错的,求助大佬,看看哪里错了
#include <bits/stdc++.h>
using namespace std;
bool test(int i, int j, int cx, int cy){
int x[] = {1, 1, -1, -1, 2, 2, -2, -2};
int y[] = {2, -2, 2, -2, 1, -1, 1, -1};
if(i == cx && j == cy){
return 1;
}
for(int k = 0; k < 8; k++){
if(i == cx + x[k] && j == cy + y[k]) {
return 1;
}
}
return 0;
}
int step(int bx, int by, int cx, int cy) {
vector< vector<long long> > add(bx + 1, vector<long long>(by + 1, 0));
for(int i = 0; i <= bx; i++){
for(int j = 0; j <= by; j++){
if (test(i, j, cx, cy)){
add[i][j] = 0;
}else if(i == 0 && j == 0){
add[i][j] = 1;
}else if(i == 0){
add[i][j] = add[i][j - 1];
}else if(j == 0){
add[i][j] = add[i - 1][j];
}else{
add[i][j] = add[i - 1][j] + add[i][j - 1];
}
}
}
// for(int i = 0; i <= bx; i++){
// for(int j = 0; j <= by; j++){
// cout << add[i][j] << ' ';
// }
// cout << endl;
// }
return add[bx][by];
}
int main() {
int bx, by, cx, cy;
cin >> bx >> by >> cx >> cy;
cout << step(bx, by, cx, cy);
}