
6 12
3
一个找规律的题, 用三个坐标(行 左列 右列 例如12的坐标为423)把每个数的位置找出来,最短路程就是各个坐标差的绝对值的和。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int ans,a[4],b[4],n,m;
while(cin>>n>>m)
{
a[1]=sqrt(n-1)+1;//行坐标
a[2]=(n-(a[1]-1)*(a[1]-1)+1)/2;//左列坐标
a[3]=(fabs(n-a[1]*a[1])+2)/2;//右列坐标
b[1]=sqrt(m-1)+1;
b[2]=(m-(b[1]-1)*(b[1]-1)+1)/2;
b[3]=(fabs(m-b[1]*b[1])+2)/2;
/*cout<<a[1]<<a[2]<<a[3]<<endl;
cout<<b[1]<<b[2]<<b[3]<<endl;
*/
ans=fabs(a[1]-b[1])+fabs(a[2]-b[2])+fabs(a[3]-b[3]);
cout<<ans<<endl;
}
return 0;
}杭电 1030 Delta-wave,布布扣,bubuko.com
原文:http://blog.csdn.net/fanerxiaoqinnian/article/details/25540967