一道算法题,机器人漫步


机器人以如图路径运动,输入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;
}
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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值