矩阵的转置吗?
看数据结构的书去 里面写的行详细的
看数据结构的书去 里面写的行详细的
解决方案 »
- shareDenyNone 算不算是CFile类中文件的读写方式呢?
- 关于开发IE插件的问题,请进
- VC在打开和关闭时做了什么操作,为什么很慢
- 用Regsvr32注册ActiveX控件的时候出错,错误码为0x80040200
- 如何发布C/S的DCOM应用程序
- 上周六腾讯面试,有接到录取通知的吗?
- 可以获得一个vector容器的句柄吗?
- 如何将EditBox将背景去除
- 今天我下载了一个“免费国际传真”的软件,有谁知道他的原理,分数不够在家,我只知道他好像要借助于EMAIL。
- SQL安装失败的问题。。
- 急需一个简单的AP初始化程序,大家一定要帮我呀
- 为何调用GetClientRect()得出rect的结果不一样?
*
* 函数名称:
* Reverse()
*
* 参数:
* unsigned char a[] - 矩阵a
* n - a为n*n阶方阵
*
* 返回值:
* int - 若返回值为0,则表示矩阵奇异,若不为0,则表示正常返回,
* 返回时,矩阵a中存放a的逆阵 *
* 说明:
* 该函数用来将DIB图像缩小1/2,返回新生成DIB的句柄。
*
************************************************************************/
int WINAPI Reverse(double a[] , int n)
{
int *is,*js;
int i,j,k,l,u,v;
double d,p;
is=(int *)malloc(n*sizeof(int));
js=(int *)malloc(n*sizeof(int));
for (k=0; k<=n-1; k++)
{
d=0.0;
for (i=k; i<=n-1; i++)
for (j=k; j<=n-1; j++)
{
l=i*n+j; p=fabs(a[l]);
if (p>d)
{
d=p;
is[k]=i;
js[k]=j;
}
}
if (d+1.0==1.0)
{
free(is);
free(js);
return(0);
}
if (is[k]!=k)
for (j=0; j<=n-1; j++)
{
u=k*n+j;
v=is[k]*n+j;
p=a[u];
a[u]=a[v];
a[v]=p;
}
if (js[k]!=k)
for (i=0; i<=n-1; i++)
{
u=i*n+k;
v=i*n+js[k];
p=a[u];
a[u]=a[v];
a[v]=p;
}
l=k*n+k;
a[l]=1/a[l];
for (j=0; j<=n-1; j++)
if (j!=k)
{
u=k*n+j;
a[u]=a[u]*a[l];
}
for (i=0; i<=n-1; i++)
if (i!=k)
for (j=0; j<=n-1; j++)
if (j!=k)
{
u=i*n+j;
a[u]=a[u]-a[i*n+k]*a[k*n+j];
}
for (i=0; i<=n-1; i++)
if (i!=k)
{
u=i*n+k;
a[u]=-a[u]*a[l];
}
}
for (k=n-1; k>=0; k--)
{
if (js[k]!=k)
for (j=0; j<=n-1; j++)
{
u=k*n+j;
v=js[k]*n+j;
p=a[u];
a[u]=a[v];
a[v]=p;
}
if (is[k]!=k)
for (i=0; i<=n-1; i++)
{
u=i*n+k;
v=i*n+is[k];
p=a[u];
a[u]=a[v];
a[v]=p;
}
}
free(is);
free(js);
return(1);
}