1 #include2 #include 3 #include 4 #define eps 1e-6 5 #define M 15 6 using namespace std; 7 double a[M],b[M][M]; 8 int n; 9 int main()10 {11 scanf("%d",&n);12 for(int i=1;i<=n;i++)13 scanf("%lf",&a[i]);14 for(int i=1;i<=n;i++)15 for(int j=1;j<=n;j++)16 {17 double t;18 scanf("%lf",&t);19 b[i][j]=2*(t-a[j]);20 b[i][n+1]+=t*t-a[j]*a[j]; 21 }22 for(int i=1;i<=n;i++)23 {24 int to;25 for(to=i;to<=n;to++)26 if(b[to][i]!=0)27 break;28 if(i!=to)29 for(int j=1;j<=n+1;j++)30 swap(b[i][j],b[to][j]);31 double t=b[i][i];32 for(int j=i;j<=n+1;j++)33 b[i][j]/=t;34 for(int j=1;j<=n;j++)35 if(j!=i)36 {37 t=b[j][i];38 for(int k=1;k<=n+1;k++)39 b[j][k]-=t*b[i][k];40 }41 }42 for(int i=1;i
先假设是二维的,设圆心为(x,y),那(x1-x)^2+(y1-y)^2=(xk-x)^2+(yk-y)^2
这样n+1个点就能构造出n个方程 然后高斯消元。(高斯消元不会的看看代码就知道了)