一道算法题,机器人漫步

    xiaoxiao2021-03-25  132

    机器人以如图路径运动,输入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); }
    转载请注明原文地址: https://ju.6miu.com/read-18060.html

    最新回复(0)