无限的路

博客给出计算两点间折线距离的输入输出要求。输入包含数据组数N及每组的四个非负整数,输出为两点间折线距离,精确到小数点后3位,并给出示例。还提到采用递推思想,用距离之差算结果。

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

##在这里插入图片描述
Input
 第一个数是正整数N(≤100)。代表数据的组数。
每组数据由四个非负整数组成x1,y1,x2,y2;所有的数都不会大于100。

Output
对于每组数据,输出两点(x1,y1),(x2,y2)之间的折线距离。注意输出结果精确到小数点后3位。

Sample Input
5
0 0 0 1
0 0 1 0
2 3 3 1
99 99 9 9
5 5 5 5

Sample Output
1.000
2.414
10.646
54985.047
0.000

#include "stdio.h"
#include"math.h"

double distance(int x, int y){
    double dis = 0;
    double segment = sqrt(2.0);
    //45读线的总和
    for(int i = 0; i <= x+y ; i ++)
        dis += (i * segment);
        //减去多加的一部分
        dis -=(y * segment);

        //加上斜线的总和
        // 勾股定理
        for(int i = 0; i < x+y; i ++){
            dis += sqrt((double)i * i  +(double)(i+1) *(i+1));
        }

    return dis;
}
int main(){

    int count,x1,x2,y1,y2;
    scanf("%d",&count);
    while(count --){
        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
        //递推算法
        //先计算从(0,0)到(x1,y1)
        // 在计算差值
        double ans = fabs(distance(x1,y1) - distance(x2,y2));
        printf("%0.3f\n",ans);
    }
    return 0;
 }

采用递推的思想,用距离之差算结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值