机器人以如图路径运动,输入x,y坐标点算出机器人到达坐标点后移动的路径
/*********************************************************************
机器人漫步:
2017 3 10
该路径有个特点,就是在行走到某个点的时候一定走完了它前面的所有的点
比如行走到x或y变成3的时候那么路径一定走完了1和2构成的方块,然后才能到3的方块
并且行走的路径也和点的奇偶有关,偶数点是从(2n,0)开始奇数点从(0,2n+1)开始
所以,当坐标中包含有偶数时,它一定走完了它前面的点的方块并且当x坐标大于y坐标的时候,它一定是在向上运动
当x<y的时候它一定是向左运动并且已经完成了向上的运动
包含奇数的时候当它走完前面所有的方块后,当x<y的时候,一定是从(0,y)向右运动,当x>y的时候一定会经过向右的运动到达(y,y)后向下运动
所以可以确定:
1.选择出最大的坐标数max
2.算出max前的点构成的方块的步数 2*i+1
3.依靠奇偶的关系,来选择坐标的移动
**********************************************************************/
#include<stdio.h>
int max_(int x,int y)//选出最大的数
{
if(x>=y)return x;
else
return y;
//x>y ? return x:return y;
}
int main()
{
int x,y;//x,y coordinate system
int max;// the max number
int n;// to statistic steps befor max
int sum=0;//adding steps
scanf("%d %d",&x,&y);
max=max_(x,y);
//printf()
for(n=0;n<max;n++) //计算之前的点构成的方块的步数
{
int every_step=2*n+1;
sum=every_step+sum;
}
机器人漫步:
2017 3 10
该路径有个特点,就是在行走到某个点的时候一定走完了它前面的所有的点
比如行走到x或y变成3的时候那么路径一定走完了1和2构成的方块,然后才能到3的方块
并且行走的路径也和点的奇偶有关,偶数点是从(2n,0)开始奇数点从(0,2n+1)开始
所以,当坐标中包含有偶数时,它一定走完了它前面的点的方块并且当x坐标大于y坐标的时候,它一定是在向上运动
当x<y的时候它一定是向左运动并且已经完成了向上的运动
包含奇数的时候当它走完前面所有的方块后,当x<y的时候,一定是从(0,y)向右运动,当x>y的时候一定会经过向右的运动到达(y,y)后向下运动
所以可以确定:
1.选择出最大的坐标数max
2.算出max前的点构成的方块的步数 2*i+1
3.依靠奇偶的关系,来选择坐标的移动
**********************************************************************/
#include<stdio.h>
int max_(int x,int y)//选出最大的数
{
if(x>=y)return x;
else
return y;
//x>y ? return x:return y;
}
int main()
{
int x,y;//x,y coordinate system
int max;// the max number
int n;// to statistic steps befor max
int sum=0;//adding steps
scanf("%d %d",&x,&y);
max=max_(x,y);
//printf()
for(n=0;n<max;n++) //计算之前的点构成的方块的步数
{
int every_step=2*n+1;
sum=every_step+sum;
}
if(x<=y && max%2 == 0) //为偶数,并且先向上再向坐运动
{
sum=sum+max+(y-x);
}
if(x>y && max%2 == 0) //为偶数向上运动
sum=sum+y;
if(x<y && max%2 == 1) //向右运动
{
sum=sum+x;
}
if(x>y && max%2 == 1) //为奇数先向右再向下运动
{
sum=sum+max+(x-y);
}
printf("%d",sum);
{
sum=sum+max+(y-x);
}
if(x>y && max%2 == 0) //为偶数向上运动
sum=sum+y;
if(x<y && max%2 == 1) //向右运动
{
sum=sum+x;
}
if(x>y && max%2 == 1) //为奇数先向右再向下运动
{
sum=sum+max+(x-y);
}
printf("%d",sum);
}