C#3、4 WA 大佬帮帮忙
查看原帖
C#3、4 WA 大佬帮帮忙
677872
YOISOBA楼主2022/2/10 00:38
#include<stdio.h>
bool heat(int c1,int c2,int x,int y){
   if((x==c1-1||x==c1+1)&&(y==c2-2||y==c2+2)) return 1;
   if((x==c1-2||x==c1+2)&&(y==c2-1||y==c2+1)) return 1;
   if(x==c1&&y==c2) return 1;
   return 0;
}//能吃返回1,否则返回0 
int hou(int x,int y,int n,int m,int c1,int c2,int (*way)[100]){//x,y是移动坐标,n,m是终点坐标,c1,c2是马的坐标 
   if(x==n&&y==m) return 1;
   if(x>n||y>m) return 0;
   if(!heat(c1,c2,x,y)){
   	if(way[x][y+1]!=0)
   		return way[x][y+1]+(way[x+1][y]=hou(x+1,y,n,m,c1,c2,way));
   	if(way[x+1][y]!=0)
   		return (way[x][y+1]=hou(x,y+1,n,m,c1,c2,way))+way[x+1][y];
   	return (way[x][y+1]=hou(x,y+1,n,m,c1,c2,way))+(way[x+1][y]=hou(x+1,y,n,m,c1,c2,way));
   }
   else return 0;
}
int main(){
   int m,n,c1,c2,way[100][100],i=0,j=0;
   scanf("%d%d%d%d",&n,&m,&c1,&c2);
   for(;i<100;i++){
   	for(;j<100;j++) way[i][j]=0;
   }
   printf("%d\n",hou(0,0,n,m,c1,c2,way));
   return 0;
}
2022/2/10 00:38
加载中...