在uva上debug过了,和标算输出的答案全是一样的,但一直WA,求助
查看原帖
在uva上debug过了,和标算输出的答案全是一样的,但一直WA,求助
31898
王珩030115楼主2021/7/16 12:39
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int i,j,k,n,m,s,t,x[1000001],y[1000001];
int main(){
	x[1]=y[1]=0;
	i=1;k=1;
	while(i<=10000){
		x[++i]=x[i-1],y[i]=y[i-1]-1;
		for(j=1;j<=k-1;j++){
			x[++i]=x[i-1]-1;
			y[i]=y[i-1]-1;
		}
		for(j=1;j<=k;j++) x[++i]=x[i-1]-1,y[i]=y[i-1];
		for(j=1;j<=k;j++) x[++i]=x[i-1],y[i]=y[i-1]+1;
		for(j=1;j<=k;j++) x[++i]=x[i-1]+1,y[i]=y[i-1]+1;
		for(j=1;j<=k;j++) x[++i]=x[i-1]+1,y[i]=y[i-1];
		for(j=1;j<=k;j++) x[++i]=x[i-1],y[i]=y[i-1]-1;
		k++;
	}

	while(scanf("%d%d",&s,&t)==2&&s){
		int ans1=abs(x[s]-x[t])+abs(y[t]-(y[s]-x[s]+x[t])),
		    ans2=abs(x[s]-x[t])+abs(y[s]-y[t]),
			ans3=abs(y[s]-y[t])+abs(x[t]-(x[s]-y[s]+y[t]));
		    ans2=min(ans2,ans3);
		    ans1=min(ans1,ans2);
		printf("The distance between cells %d and %d is %d.\n",s,t,ans1);
	}
	return 0;
}
2021/7/16 12:39
加载中...