2019年的一些感想

今年以来,发现以前很多“不可做”的题现在都变得简单起来了。(是不是因为我太蒻了)

尤其是像“马的遍历”这样的题。(别欺负小蒟蒻不会用队列QAQ)

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[401][401];//存储答案 
int n,m,sx,sy;
int movex[8]={2,2,1,-1,-2,-2,-1,1},movey[8]={-1,1,2,2,1,-1,-2,-2};//马走“日” 
int qx[160001],qy[160001],k[160001];
int xyds=1;
void bfs(int step)
{
	if(k[step-1]==xyds) return;
	k[step]=xyds;
	int djy=xyds;
	for(int i=k[step-1];i<djy;i++){
		for(int j=0;j<=7;j++){//尝试8个方向 
			int x=qx[i]+movex[j],y=qy[i]+movey[j];
			if(x>=1&&x<=n&&y>=1&&y<=m&&a[x][y]==-1){
				a[x][y]=step;//存储步数 
				qx[xyds]=x;
				qy[xyds]=y;//存储位置 
				xyds++;
			}
		}
	}
	bfs(step+1);
}
int main()
{
	memset(a,-1,sizeof(a));
	scanf("%d%d%d%d",&n,&m,&sx,&sy);
	a[sx][sy]=0;
	qx[0]=sx;
	qy[0]=sy;
	bfs(1);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) printf("%-5d",a[i][j]);//左对齐输出 
		printf("
");
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/dong-ji-yuan/p/10307540.html