莫明的错误 求大佬救援
查看原帖
莫明的错误 求大佬救援
170410
向晚楼主2021/3/17 19:14

样例都没过

输出样例:  
8 
9
我的输出:
9
9

代码如下(码风不好勿喷):

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int sx,sy,gx,gy,ans=1<<30,dp[22][22];
short m1[13]={-1,-2,-2,-1,1,2, 2, 1,2, 2,-2,-2};
short m2[13]={-2,-1, 1, 2,2,1,-1,-2,2,-2, 2,-2};
void dfs(int x,int y,int sum){
	if(sum>=dp[x][y]&&dp[x][y]) return ;
	dp[x][y]=sum;
	if(x==1&&y==1){
		ans=min(ans,sum);
		return ;
	}
	for(int i=1;i<12;i++){
		int mx=x+m1[i],my=y+m2[i];
		if(mx>20||mx<1||my>20||my<1) continue;
		dfs(mx,my,sum+1);
	}
}
int main(){
	cin>>sx>>sy;
	sx=abs(sx);     //防止出现负样例
	sy=abs(sy);
	cin>>gx>>gy;
	gx=abs(gx);
	gy=abs(gy);
	dfs(sx,sy,0);
	cout<<ans<<endl;
	memset(dp,0,sizeof dp);
	ans=1<<30;
	dfs(gx,gy,0);
	cout<<ans<<endl;
	return 0;
}
2021/3/17 19:14
加载中...