递归写的,为啥3,4WA了,求大佬帮忙看看QAQ
查看原帖
递归写的,为啥3,4WA了,求大佬帮忙看看QAQ
1215731
flower_bloosm楼主2023/11/25 08:40
#include<stdio.h>
int main(){
	long long dp[30][30];
	int hourse_x[8]={-2,-2,-1,-1,1,1,2,2};
	int hourse_y[8]={1,-1,2,-2,2,-2,1,-1};
	int n,m,x,y;
	scanf("%d %d %d %d",&n,&m,&x,&y);
	n+=1;m+=1;x+=1;y+=1;
    
	for(int i=1;i<=30;i++){
		dp[1][i]=1;}
	for(int i=1;i<=30;i++){
		dp[i][1]=1;}
	for(int i=0;i<8;i++){
        if(x+hourse_x[i]>=1&&x+hourse_x[i]<=n&&y+hourse_y[i]>=1&&y+hourse_y[i]<=m){
			dp[x+hourse_x[i]][y+hourse_y[i]]=-1;
		}
	}
	dp[x][y]=-1;
	dp[1][1]=1;

	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(dp[i][j]==-1)
			{dp[i][j]=0;}
			else if(i>=2&&j>=2)
			{dp[i][j]=dp[i-1][j]+dp[i][j-1];}
			else if(i<2&&j>=2)
			{dp[i][j]=dp[i][j-1];}
			else if(i>=2&&j<2)
			{dp[i][j]=dp[i-1][j];}	
			else if(i==1&&j==1)
			{dp[i][j]=1;}
		}
	}
	printf("%d",dp[n][m]);
	
return 0;
}
2023/11/25 08:40
加载中...