- UID
- 49855
- 积分
- 3191
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-5-16
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
- #include<stdio.h>
- #define N 10
- int getA(int arcs[N][N],int n)//按第一行展开计算|A|
- {
- if(n==1)
- {
- return arcs[0][0];
- }
- int ans = 0;
- int temp[N][N];
- int i,j,k;
- for(i=0;i<n;i++)
- {
- for(j=0;j<n-1;j++)
- {
- for(k=0;k<n-1;k++)
- {
- temp[j][k] = arcs[j+1][(k>=i)?k+1:k];
- }
- }
- int t = getA(temp,n-1);
- if(i%2==0)
- {
- ans += arcs[0]*t;
- }
- else
- {
- ans -= arcs[0]*t;
- }
- }
- return ans;
- }
- void getAStart(int arcs[N][N],int n,int ans[N][N])//计算每一行每一列的每个元素所对应的余子式,组成A*
- {
- if(n==1)
- {
- ans[0][0] = 1;
- return;
- }
- int i,j,k,t;
- int temp[N][N];
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- for(k=0;k<n-1;k++)
- {
- for(t=0;t<n-1;t++)
- {
- temp[k][t] = arcs[k>=i?k+1:k][t>=j?t+1:t];
- }
- }
- ans[j] = getA(temp,n-1);
- if((i+j)%2 == 1)
- {
- ans[j] = - ans[j];
- }
- }
- }
- }
- int main()
- {
- int arcs[N][N];
- int astar[N][N];
- int i,j;
- int n;
- while(scanf("%d",&n)!=EOF && n)
- {
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- scanf("%d",&arcs[j]);
- }
- }
- int a = getA(arcs,n);
- if(a==0)
- {
- printf("can not transform!\n");
- }
- else
- {
- getAStart(arcs,n,astar);
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- printf("%.3lf ",(double)astar[j]/a);
- }
- printf("\n");
- }
- }
- printf("\n");
- }
- return 0;
- }
|
|