60分求助
查看原帖
60分求助
651775
lizhaoqi楼主2023/10/11 16:38
#include<bits/stdc++.h> 
using namespace std;
int ma[50][50];
long long dp[50][50];
int x,y,mx,my;
int cx[20]={-2,-1,1,2,-2,-1,1,2,0};
int cy[20]={1,2,2,1,-1,-2,-2,-1,0};
int main(){
	cin>>x>>y>>mx>>my;
	for(int i=0;i<=8;i++){
		if(mx+cx[i]>=0&&my+cy[i]>=0)
		dp[mx+cx[i]][my+cy[i]]=-1;
	}
	for(int i=0;i<=x;i++){
		if(dp[i][0]!=-1){
			dp[i][0]=1;	
		}
	}
	for(int i=0;i<=y;i++){
		if(dp[0][i]!=-1){
			dp[0][i]=1;	
		}
	}	
	for(int i=1;i<=x;i++){
		for(int j=1;j<=y;j++){
			if(dp[i][j]!=-1){
				if(dp[i][j-1]==-1&&dp[i-1][j]!=-1){
					dp[i][j]=dp[i-1][j];					
				}
				if(dp[i-1][j]==-1&&dp[i][j-1]!=-1){
					dp[i][j]=dp[i][j-1];					
				}
				if(dp[i][j-1]!=-1&&dp[i-1][j]!=-1){
					dp[i][j]=dp[i-1][j]+dp[i][j-1];					
				}								
			}
		}
	}
	cout<<dp[x][y];
	return 0;
}

这个代码(dp做法)60分(3,4测试点WA) 麻烦各位大佬帮忙找一下问题,谢谢!

2023/10/11 16:38
加载中...