这个题分为几部分
1、首先建立一个函数两点之间的距离
2、之后再建立一个函数计算到原点的距离
3、最终在主函数中只需要实现两点到原点距离相减
可以利用递推做
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
double dp[300][300];
//利用二维数组建立一个类似与图中的坐标图
double long(int a, int b, int c, int d)
{
return 1.000 * sqrt(pow((a - b), 2) + pow((c - d), 2));
}
//此函数负责运算的是二者之间的直线距离
void init()
{
int j = 1;
dp[0][0] = 0;
while (j <= 201)
{
int i = 0;
int t = j;
while (i <= j)
{
if (i == 0)
{
dp[0][t] = fabs(dp[t - 1][0] + long(0, t - 1, t, 0));
}
else
{
dp[i][t] = fabs(dp[i - 1][t + 1] + sqrt(2));
}
i++;
t--;
}
j++;
}
}
int main()
{
init();
int n;
scanf("%d", &n);
while (n--)
{
int a, b, x, y;
scanf("%d %d %d %d", &a, &b, &x, &y);
printf("%.3lf\n", fabs(dp[x][y] - dp[a][b]));
}
return 0;
}