首页 > 其他 > 详细

蛇形矩阵求坐标

时间:2019-11-10 15:42:37      阅读:127      评论:0      收藏:0      [点我收藏+]

题目:

  输入w m n三个数,w是矩阵宽度,m和n分别为矩阵里面的两个数;

  输出值为两个数之间的距离(不能走直线)

  矩阵按舌形排列

  例如:

  输入 w 为 6   m 为 2   n 为 8 则矩阵为:

  1      2     3    4    5   6
  12   11   10   9    8   7
  13   14   15   16   17   18
  24   23   22   21   20   19

  那么 8 和 2 之间的距离为 4

 

 

解题思路:

  先分别求出两个点的坐标,用坐标相减取绝对值再相加,即为两个点的距离

  求坐标时,要考虑到蛇形排列中偶数行倒序排列的特殊情况

 

#include <stdio.h>

int main()
{
    int w = 0;    //宽度
    int val = 0;    //输入数值
    int val_1 = 0;    //输入数值2
    scanf("%d %d %d", &w, &val,&val_1);

    int x = 0, y = 0;//横纵坐标

    y = ((val - 1) / w) + 1; //该值所在纵坐标(第几行)

    if (y % 2 == 1)    //如果该行为奇数行
    {
        x = val - (y - 1)*w;
    }
    else  //如果为偶数行
    {
        x = val - (y - 1)*w;
        x = w - x + 1;
    }

    printf("第一个数的坐标为:(%d,%d)\n", x, y);


    int xx = 0, yy = 0;

    yy = ((val_1 - 1) / w) + 1; //该值所在纵坐标(第几行)

    if (yy % 2 == 1)    //如果该行为奇数行
    {
        xx = val_1 - (yy - 1)*w;
    }
    else  //如果为偶数行
    {
        xx = val_1 - (yy - 1)*w;
        xx = w - xx + 1;
    }
    printf("第二个数的坐标为:(%d,%d)\n", xx, yy);

    int sum = 0, sunm = 0, s = 0;
    sum = (xx - x);
    if (sum < 0){ sum = -sum; }
    sunm = (yy - y);
    if (sunm < 0){ sunm = -sunm; }
    s = sum + sunm;
    printf("两个数之间的距离为:%d\n", s);

    return 0;
}

 

  

蛇形矩阵求坐标

原文:https://www.cnblogs.com/qifeng1024/p/11830428.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!