1340-逆矩阵问题

描述

 

给定2 个n×n矩阵a 和b,试设计一个判定a 和b 是否互逆的蒙特卡罗算法,算法的计算时间应为O(n2)。设计一个蒙特卡罗算法,对于给定的矩阵a和b,判定其是否互逆。

 

输入

 

输入的第一行有1个正整数n,表示矩阵a和b 为n×n矩阵。接下来的2n行,每行有n个实数,分别表示矩阵a和b 中的元素。

 

输出

矩阵a 和b 互逆则输出YES,否则输出NO。

样例输入

3

1 2 3

2 2 3

3 3 3


-1 1 0

1 -2 1

0 1 -0.666667

样例输出

YES

#include<stdio.h>
#include<math.h>
#define N 20
int main()
{
    //freopen("a.txt","r",stdin);
    float a[N][N],b[N][N],c[N][N]={0};
    int n,i,j,k,f;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%f",&a[i][j]);
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%f",&b[i][j]);
    for(i=0;i<n;i++)     
        for(j=0;j<n;j++)      
            for(k=0;k<n;k++)       
                c[i][j]+=a[i][k]*b[k][j];
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            f=1;
            if(i!=j) 
            {
                if(fabs(c[i][j])<=0.00001) f=0;
            }
            else 
            {
                if(fabs(c[i][j]-1)<=0.00001) f=0;
            }
        }
    }
    if(f==1) printf("NO\n");
        else printf("YES\n");
    return 0;
}

  

posted @ 2013-11-22 10:33  七年之后  阅读(933)  评论(0编辑  收藏  举报