ps:感觉纯数学题.....我的思路就是找规律,发现dp(x+y) 就是 (0,x+y)的值,然后再加上x*根号2.就是他的距离。然后两个距离相减的绝对值就是两个点之间的距离了.

代码:

#include "stdio.h"
#include "math.h"
int N;
double dp[110];
double cal(int x,int y){
    double ll;
    if(x+y==0) return 0.0;
    ll=dp[x+y];
    ll+=x*sqrt(2);
    return ll;
}
int main(){
    int x1,x2,y1,y2,i;
    double ll;
    dp[0]=0.0;
    dp[1]=1.0;
    for(i=2;i<210;i++){
        dp[i]=dp[i-1]+sqrt(i*i+(i-1)*(i-1))+sqrt(2*pow(i-1,2));   
    }
    scanf("%d",&N);
    while(N--){
        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
        ll=fabs(cal(x1,y1)-cal(x2,y2));
        printf("%.3lf\n",ll);
    }
    return 0;
}