移动距离问题

题目

X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 1,2,3... 当排满一行时,从下一行相邻的楼往反方向排号。
例如:当小区排号宽度为 6 时,开始情形如下:

1  2  3  4  5  6
12 11 10 9  8  7
13 14 15 .....

问已知了两个楼号 m 和 n,求出它们之间的最短移动距离(不能斜线方向移动)
输入描述
输入为 3 个整数 w m n,空格分开,都在 1 到 10000 范围内。
w 为排号宽度,m,n 为待计算的楼号
输出描述
输出一个整数,表示 m n 两楼间最短移动距离。

输入样例 1:

6 8 2

输出样例 1:

4

输入样例 2:

4 7 20

输出样例 2:

5

输入样例 3:

5 1 35

输出样例 3:

10

完整代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int w,m,n,result=0;
    scanf("%d %d %d",&w,&m,&n);

    int row[2],col[2];

    if(m%w==0){
        row[0]=m/w-1;
    }else{
        row[0]=m/w;
    }
    if(row[0]%2==0){
        col[0]=(row[0]+1)*w-m;
    }else{
        col[0]=m-row[0]*w-1;
    }

    if(n%w==0){
        row[1]=n/w-1;
    }else{
        row[1]=n/w;
    }
    if(row[1]%2==0){
        col[1]=(row[1]+1)*w-n;
    }else{
        col[1]=n-row[1]*w-1;
    }

    result=abs(row[0]-row[1])+abs(col[0]-col[1]);
    printf("%d",result);

    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,...
    bbqub阅读 3,355评论 0 0
  • 数组索引 这样声明个数组,名为radius,含3个int型元素。我们可通过radius[0],radius[1],...
    夏威夷的芒果阅读 4,514评论 1 0
  • 本文字数1489,阅读需要10分钟,适合对理财、投资有兴趣,追求财富自由的人 财务自由/财富自由一直是一个很火的概...
    非想非想阅读 1,625评论 0 4
  • 很多人可能都有过这样的经历:心情不好,到操场上跑几圈,心情就会有所改变.这是偶然的吗? 这绝不是偶然,今天我要讲...
    我是椿阅读 9,128评论 1 2
  • 秋天的风、秋天的雨、秋天的阳光、秋天的景象,秋天的丰润、成熟与宁静,还有秋天的--“飞扬” 好友飞扬如同微风和煦轻...
    小房子梅子姐姐阅读 3,627评论 0 3

友情链接更多精彩内容