PTA作业记录1(西安距离)

该博客介绍了一个简单的C程序,用于计算在虚构的西安道路网格中,从点(a, b)到点(c, d)的最短步数。程序通过计算两个坐标之间的水平和垂直距离的绝对值之和来得出答案。输入包括四个整数坐标,输出为两者间的西安距离。示例输入和输出分别给出了起点(0, 0)和终点(3, 4)的情况,答案为7步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

西安距离 

分数 10
作者 翁恺
单位 浙江大学
小明来到了古都西安,想去参观大唐西市!

西安的道路可以看做是与x轴或y轴垂直的直线,小明位于(a,b),而目的地位于(c,d),问最少几步可以到达。

输入格式:

一行中四个整数,a,b,c,d,表示坐标为(a,b)与(c,d),这里0<=a,b,c,d<=1000

输出格式:

输出这两个点的西安距离。

输入样例:

0 0 3 4

输出样例:

7

#include<stdio.h>
int main(void)
{
    int a;
    int b;
    int c;
    int d;
    int x;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    x=abs(c-a)+abs(d-b);  //把输入的四个数字的前两个数和后两个数分别看成一个坐标,然后对应相减去
    printf("%d",x);       //绝对值相加就是答案,本质就是平面直角坐标系里按照格子走的距离
    return 0;
}

### PTA西安之间的距离以及Java相关内容 #### 关于PTA中的西安距离计算 在给定的参考资料中,西安距离被定义为两点 \((a, b)\) 和 \((c, d)\) 之间沿坐标轴方向上的最短路径长度。这种距离也被称为曼哈顿距离(Manhattan Distance),其公式为: \[ |a - c| + |b - d| \] 此公式的实现可以通过 Java 编程完成[^3]。以下是基于该逻辑的一个简单代码示例: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); int d = scanner.nextInt(); // 计算两个点之间的曼哈顿距离 System.out.println(Math.abs(a - c) + Math.abs(b - d)); } } ``` 上述代码通过 `Math.abs` 方法来获取绝对值,从而简化了条件判断的过程。 --- #### Java 中的相关概念 Java 是一种面向对象的高级编程语言,在处理输入输出方面非常灵活。对于本题而言,主要涉及以下几个知识点: 1. **Scanner 类**:用于读取用户的输入数据。 2. **基本运算符**:包括加法 (`+`)、减法 (`-`) 和绝对值函数 (`Math.abs()`)。 3. **控制台输出**:使用 `System.out.println()` 将结果打印到标准输出流。 这些基础知识可以在其他类似的题目中复用,例如引用[2]提到的求两数之和、差、积和商的操作[^2]。 --- #### 结合PTA平台的应用场景 PTA 平台是一个在线评测系统,常用于学生练习算法和编程能力。针对 “西安距离” 这类问题,通常会提供一组测试案例以验证程序的正确性和鲁棒性。例如,输入 \(0, 0, 3, 4\) 的情况下,期望输出应为 \(7\),这正是由公式 \(|0 - 3| + |0 - 4|\) 得出的结果[^1]。 此外,引用[4]进一步说明了此类问题的实际背景——假设城市道路网络完全按照网格布局,则任意两点间的最短行走路径即为曼哈顿距离[^4]。 --- ### 总结 综上所述,“西安距离”的核心在于理解并应用曼哈顿距离的概念及其对应的数学表达式。利用 Java 提供的基础功能即可轻松解决这一问题,并为进一步学习更复杂的算法奠定基础。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CanCerLe0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值