矩阵

原创 2013年12月03日 19:33:52

//今天写作业的时候 发现行列式太难写了,就写了简陋的C++来计算,算不算偷懒呢。。。

 

#include<stdio.h>

struct det
{
 int maxt[105][105];
};

det make(int x,int n,det d)
{
 det t;
 int i,j,k;
 for(i=0,k=0;i<n;i++)
    {
        if(i==x)continue;
  for(j=1;j<n;j++)
   t.maxt[j-1][k]=d.maxt[j][i];
        k++;
    }
 return t;
}

int dfs(int n,det d,int mod)
{
 int i,j,k;
 int ans=0;
 if(n==3)
 {
  int a,b;
  for(i=0;i<n;i++)
  {
   a=1,b=1;
   for(j=i,k=0;j<n+i;j++,k++)
   {
    a=(a*d.maxt[k][j%n]+mod)%mod;
    b=(b*d.maxt[k][(2*n-j)%n]+mod)%mod;
   }
   ans=(ans+a-b+mod)%mod;
  }
 }
 else if(n==2)
        ans=(ans+d.maxt[0][0]*d.maxt[1][1]-d.maxt[0][1]*d.maxt[1][0]+mod)%mod;
 else
 {

  for(i=0;i<n;i++)
        {
            if(i%2==0)
   ans=(ans+d.maxt[0][i]*dfs(n-1,make(i,n,d),mod)+mod)%mod;
   else
            ans=(ans-d.maxt[0][i]*dfs(n-1,make(i,n,d),mod)+mod)%mod;
        }

 }
 return (ans+mod)%mod;
}

 

int main()
{
 det d;
 int n,mod;
 int i,j;
 while(scanf("%d%d",&n,&mod)!=EOF)
 {
  for(i=0;i<n;i++)
   for(j=0;j<n;j++)
    scanf("%d",&d.maxt[i][j]);
  printf("%d\n",dfs(n,d,mod));
 }
 return 0;
}

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

VS实现灰度共生矩阵

  • 2017年11月13日 22:41
  • 267KB
  • 下载

理解矩阵特征值与特征向量

从线性空间的角度看,在一个定义了内积的线性空间里,对一个N阶对称方阵进行特征分解,就是产生了该空间的N个标准正交基,然后把矩阵投影到这N个基上。N个特征向量就是N个标准正交基,而特征值的模则代表矩阵在...
  • on2way
  • on2way
  • 2014年12月25日 18:50
  • 2788

基于visual Studio2013解决C语言竞赛题之0609矩阵处理

题目解决代码及点评/************************************************************************/ /* 9. 在主函数内任意输入...

矩阵知识点

  • 2017年07月11日 22:21
  • 1.65MB
  • 下载

实对称矩阵的性质与证明

  • 2016年04月06日 21:30
  • 18KB
  • 下载

二进制矩阵 POJ1147

Binary codes Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4925   A...

矩阵论(第二版)

  • 2016年11月10日 09:36
  • 1.79MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:矩阵
举报原因:
原因补充:

(最多只允许输入30个字)