问题标题: 酷町堂:发现了一道极水的题,却80分

1
0
已解决
黄依成
黄依成
中级天翼
中级天翼

众所周知,6467这题很水doge

还是道8分题

不就把马和田的方向数组合起来嘛!(小声bb

于是就有了下面这段WA80代码

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
struct node{
	int x,y;
};
queue<node> q;
int x1,y1,x2,y2,f[25][25];
int dir[15][2]={{0},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,-2},{-2,2},{2,-2},{2,2}};
void bfs(){
	while(!q.empty()){
		node h=q.front();
		q.pop();
		for(int i=1;i<=12;i++){
			int dx=h.x+dir[i][0],dy=h.y+dir[i][1];
			if(dx>=1&&dy>=1&&dx<=20&&dy<=20&&f[dx][dy]==-1){
				f[dx][dy]=f[h.x][h.y]+1;
				q.push((node){dx,dy});
			}
		}
	}
}
int main(){
	cin>>x1>>y1>>x2>>y2;
	memset(f,-1,sizeof(f));
	f[1][1]=0;
	q.push((node){1,1});
	bfs();
	cout<<f[x1][y1]<<endl<<f[x2][y2];
	return 0;
}

求大佬hack

黄依成在2021-04-26 19:15:24追加了内容

黄依成在2021-04-26 19:25:03追加了内容

AC啦!经验真多!


0
已采纳
汪宇航
汪宇航
新手启示者
新手启示者

要用高精度,因为它就是”过河卒“的翻版,所以需用高精度,否则最多80(也可以用long long||unsigned long long)

我要回答