请问这个哪错了啊?点3我的答案是57050531010
查看原帖
请问这个哪错了啊?点3我的答案是57050531010
829135
thd21341楼主2022/11/22 16:02
#include <iostream>
using namespace std;
static long long map[25][25]={0};
static int n,m,x,y;//分别是B的位置(即整个矩阵的大小),以及马所在的位置
int main (void)
{
	int horse_x[8]={-1,-1,-2,-2,1,1,2,2};
	int horse_y[8]={2,-2,1,-1,2,-2,1,-1};
	
	cin>>n>>m>>x>>y;
	
	for (int i=0;i<=n;i++){//初始化,对与矩阵的每一个位置(目前马还未进去)赋1
		for (int y=0;y<=m;y++){
			map[i][y]=1;
		}
	}
	
	map[x][y]=0;//马的位置以及马能够达到的位置为无法达到
	for (int i=0;i<8;i++){
		if (x+horse_x[i]>=0&&x+horse_x[i]<=n&&y+horse_y[i]>=0&&y+horse_y[i]<=m){
			map[x+horse_x[i]][y+horse_y[i]]=0;
			if (x+horse_x[i]==0){
				for (int y=y+horse_y[i];y<=n;y++){
					map[0][y]=0;
				}
			}else if (y+horse_y[i]==0){
				for (int k=x+horse_x[i];x<=m;x+x){
					map[k][0]=0;
				}
			}
		}
	}

	for (int i=0;i<=n;i++){
			for (int y=0;y<=m;y++){
				cout<<map[i][y];
				}
				cout<<"\n";
			}
			
	for (int i=1;i<=n;i++){
		for (int y=1;y<=m;y++){
			if (map[i][y]!=0){
				map[i][y]=map[i-1][y]+map[i][y-1];
			}
		}
	}
	
	cout<<map[n][m];
	
	return 0;
}
2022/11/22 16:02
加载中...