这个题分为几部分
1、首先建立一个函数两点之间的距离
2、之后再建立一个函数计算到原点的距离
3、最终在主函数中只需要实现两点到原点距离相减
可以利用递推做
#include#include #include #include 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("%.3lfn", fabs(dp[x][y] - dp[a][b])); } return 0; }



