线性代数挂了的找我童鞋朋友们!!- -

童鞋们朋友们,线性代数挂了的找我啊!出售求矩阵的秩的程序,一元一个!!

好了,言归正传。其实这是今天(应该叫昨天了的说)河北大学赛的其中一道题目:求矩阵的秩。题目就不抄了,就是求矩阵的秩。矩阵的行和列的上限为10.

这道题不难,就是有点烦。要说思路,那就是直接硬搞,按线性代数书上的方法初等变换硬搞过去,这里只用行变换,省的到时麻烦一大堆。不考虑优化啥的,反正计算机别的不会,就会帮你算。最后统计下非零行总数就行了。源代码如下:

 

#include<iostream>
#include
<cmath>
#define eps 1e-8
using namespace std;
int C,R;
double matrix[12][12];
int main()
{
    
int i,j;
    
while(scanf("%d%d",&C,&R)&&(C+R))
    
{
        
for(i=1;i<=C;i++)
        
{
            
for(j=1;j<=R;j++)
                scanf(
"%lf",&matrix[i][j]);
        }

        
int nc=1,nr=1;
        
while(1)
        
{
            
if(nc>C||nr>R)
                
break;
            
while(fabs(matrix[nc][nr])<=eps)
            
{
                
for(i=nc+1;i<=C;i++)
                
{
                    
if(fabs(matrix[i][nr])>eps)
                        
break;
                }

                
if(i<=C)
                
{
                    
for(j=1;j<=R;j++)
                    
{
                        
double temp=matrix[nc][j];
                        matrix[nc][j]
=matrix[i][j];
                        matrix[i][j]
=temp;
                    }

                    
break;
                }

                
else
                    nr
++;
                
if(nc>C||nr>R)
                    
break;
            }

            
if(nc>C||nr>R)
                
break;
            
for(i=nc+1;i<=C;i++)
            
{
                
double x=(-matrix[i][nr])/matrix[nc][nr];
                
for(j=nr;j<=R;j++)
                    matrix[i][j]
+=x*matrix[nc][j];
            }

            nc
++;nr++;
        }

        
int c=0;
        
for(i=C;i>=1;i--)
        
{
            
for(j=1;j<=R;j++)
            
{
                
if(fabs(matrix[i][j])>eps)
                    
break;
            }

            
if(j<=R)
                
break;
            c
++;
        }

        printf(
"%d\n",C-c);
    }

    
return 0;
}

posted on 2010-03-21 01:14 NARUTOACM 阅读(1051) 评论(0)  编辑 收藏 引用 所属分类: 趣题


技术专题:
jQuery   Android   iPad

博客园  博问  IT新闻  学英语  C++程序员招聘
标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
每天10分钟,轻松学英语
网站导航:

最简洁阅读版式:
线性代数挂了的找我童鞋朋友们!!- -
<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

ACM—ICPC

搜索

最新评论

阅读排行榜

评论排行榜