解行列式
来源:互联网 发布:iphone免费解压缩软件 编辑:程序博客网 时间:2024/04/29 09:15
#include <iostream>
using std::cin;
using std::cout;
template <class T>
void input(int &d,T** &m)
{
cout<<"输入维数:";cin>>d;
m=new T*[d];
for (int i=0;i<d;i++) m[i]=new T[d];
cout<<"输入数据:/n";
for (int i=0;i<d;i++)
for (int j=0;j<d;j++)
cin>>m[i][j];
}
template <class T>
T** divide(int d,T** &m,int x,int y)
{
T** result;
result=new T*[d-1];
for (int i=0;i<d-1;i++) result[i]=new T[d-1];
for (int i1=0,i2=0;i1<d;i1++,i2++)
for (int j1=0,j2=0;j1<d;j1++,j2++)
{
if (x==i1) i1++; if (i1>=d) break;
if (y==j1) j1++; if (j1>=d) break;
result[i2][j2]=m[i1][j1];
}
return result;
}
template <class T>
T solve(int d,T** m)
{
T result=0;
if (d==2) result=(m[0][0]*m[1][1]-m[1][0]*m[0][1]);
else
for (int i=0;i<d;i++)
if(i%2!=0)result-=m[0][i]*solve(d-1,divide(d,m,0,i));
else result+=m[0][i]*solve(d-1,divide(d,m,0,i));
return result;
for (int i=0;i<d;i++) delete[] m[i];
delete[] m; //先前根本就忘了删除,竟然没人提醒我一下,厚道啊!!!!
}
/*
void debug()
{
int **l;
l=new int*[4];
for (int i=0;i<4;i++) l[i]=new int[4];
for (int i=0;i<4;i++) for (int j=0;j<4;j++) l[i][j]=j;
cout<<solve(4,l);
}
*/
{
double** x; //可以变
int d;
input(d,x);
cout<<"答案:"<<solve(d,x)<<"/n";
}
int main()
{
//debug();
char ans;
do
{
cacl();
cout<<"要继续吗?(Y:yes / N:no) ";
cin>>ans;
} while(ans=='y'||ans=='Y');
cin.get();
cin.get();
return 0;
}
- 解行列式
- 行列式
- 行列式
- 行列式....
- 行列式
- 行列式
- 行列式
- 行列式
- 行列式
- 行列式
- 求行列式
- 行列式求值
- 高斯消元解行列式
- 行列式_part1
- 行列式_part2
- 行列式求值
- 行列式求值
- 行列式模板
- 网页代码
- [收藏]LINUX的目录树
- Unpacking Dlls And Drivers With Ollydbg, Geffners blog
- yzPELib v0.5 by UsAr
- DMK Architecture Diagram
- 解行列式
- 求解马的周游路线
- 求解数独
- 一个COM调用时出现的错误及解决办法
- Mysql查询优化器浅析
- java时间处理的例子
- DIV固定不动,不随滚动条滚动且不闪动
- 常见的十四种Java开发工具及其特点
- 140个奇妙的电脑秘籍(一)