60分求助
查看原帖
60分求助
351015
旭日临窗XJ-尊楼主2020/7/26 12:25
#include <bits/stdc++.h>
using namespace std;
long long  n,m,x,y,dp[100][100];//dp[i][j]表示(i,j)到(n,m)路径 
bool a[50][50];
void clean(){//预处理 
	for(int i = 0;i <= n + 1;i++){
		for(int j = 0;j <= m + 1;j++){
			if(i == x + 1 && j == y - 2) a[i][j] == 0;
			else if(i == x - 1 && j == y - 2) a[i][j] = 0;
			else if(i == x - 2 && j == y - 1) a[i][j] = 0;
			else if(i == x + 2 && j == y - 1) a[i][j] = 0;
			else if(i == x - 2 && j == y + 1) a[i][j] = 0;
			else if(i == x - 1 && j == y + 2) a[i][j] = 0;
			else if(i == x + 1 && j == y + 2) a[i][j] = 0;
			else if(i == x + 2 && j == y + 1) a[i][j] = 0;
			else if(i == x && j == y) a[i][j] = 0;
			else if(i > n || j > m) a[i][j] = 0;
			else a[i][j] = 1;
		}
	}
}
int f(){//动态规划 
	for(int i = n;i >= 0;i--){
		for(int j = m;j >= 0;j--){
			if(!a[i][j]) dp[i][j] = 0;
			else if(i == n && j == m) dp[i][j] = 1; 
			else if(!a[i + 1][j] && !a[i][j + 1]) dp[i][j] = 0;
			else if(!a[i + 1][j]) dp[i][j] = dp[i][j + 1];
			else if(!a[i][j + 1]) dp[i][j] = dp[i + 1][j];
			else dp[i][j] = dp[i][j + 1] + dp[i + 1][j];
		}
	}
	return dp[0][0];
}
int main(){
	cin >> n >> m >> x >> y;
	clean();
	cout << f();
	return 0;
} 

求助哪里错了?

2020/7/26 12:25
加载中...