美文网首页
2015年Java方向C组第八题

2015年Java方向C组第八题

作者: D丝学编程 | 来源:发表于2021-02-15 09:58 被阅读0次

标题:移动距离

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范围内,要求输出一个整数,表示m n 两楼间最短移动距离。

例如:
用户输入:
6 8 2
则,程序应该输出:
4

再例如:
用户输入:
4 7 20
则,程序应该输出:
5

资源约定:

峰值内存消耗(含虚拟机) < 256M

CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。

解析:

根据题意,得出结论,最短距离=(两个数行号之差绝对值)+(两个数的列号之差绝对值)。

Scanner input = new Scanner(System.in);
int w = input.nextInt(); //矩阵一行的元素个数(宽度)
int m = input.nextInt(); //第一个数字
int n = input.nextInt(); //第二个数字
//根据题意,得出结论,最短距离=(两个数行号之差绝对值)+(两个数的列号之差绝对值)。
//此处行号从1开始
int mRow =  m % w == 0 ? m / w : m / w+1; //第一个数的行号
int nRow =  n % w == 0 ? n / w : n / w+1; //第二个数的行号
int mCol = 0; //第一个数字的列号,列号从0开始
if(mRow % 2 == 1) //奇数行(列号=m-当前行最小的数字)
    mCol = m - (w*(mRow-1)+1);
else //偶数行(列号 = 当前行最大的数字-m)
    mCol = w*mRow - m;
int nCol = 0; //第二个数字的列号,列号从0开始
if(nRow % 2 == 1) //奇数行(列号=m-当前行最小的数字)
    nCol = n - (w*(nRow-1)+1);
else //偶数行(列号 = 当前行最大的数字-m)
    nCol = w*nRow - n;
//由于我们要求的是行号之差和列号之差,所以行号和列号从0开始或从1开始并没有影响
int r = Math.abs(mRow-nRow) + Math.abs(mCol - nCol);
System.out.println(r);

相关文章

  • 2014年Java方向C组第八题

    标题:兰顿蚂蚁 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。 平面上的正方形格子被填上...

  • 2016年Java方向C组第八题

    冰雹数 任意给定一个正整数N,如果是偶数,执行: N / 2如果是奇数,执行: N * 3 + 1 生成的新的数字...

  • 2018年Java方向C组第八题

    标题:等腰三角形 本题目要求你在控制台输出一个由数字组成的等腰三角形。具体的步骤是: 先用1,2,3,...的自然...

  • 2017年Java方向C组第八题

    标题:拉马车 小的时候,你玩过纸牌游戏吗?有一种叫做“拉马车”的游戏,规则很简单,却很吸引小朋友。 其规则简述如下...

  • 2015年Java方向C组第八题

    标题:移动距离 X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3... 当排满一行时,...

  • 2014年Java方向C组第九题

    标题:地宫取宝 X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 ...

  • 2015年Java方向C组第二题

    第二题 标题:立方尾不变 有些数字的立方的末尾正好是该数字本身。比如:1,4,5,6,9,24,25,.... 请...

  • 2015年Java方向C组第三题

    第三题 标题:无穷分数 无穷的分数,有时会趋向于固定的数字。 请计算【图1.jpg】所示的无穷分数,要求四舍五入,...

  • 2018年Java方向C组第四题

    标题:第几个幸运数 到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。...

  • 2015年Java方向C组第四题

    标题:循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846...

网友评论

      本文标题:2015年Java方向C组第八题

      本文链接:https://www.haomeiwen.com/subject/kwzlxltx.html