下三角矩阵的压缩存储

来源:互联网 发布:ubuntu 升级python 编辑:程序博客网 时间:2024/05/28 05:19

输出原来的矩阵;输出压缩后的一维数组;根据输入的行号列号,从压缩矩阵中计算出元素的值


#include<stdio.h>

int main(){

       inta[5][5]={           //定义原二维数组

              1,0, 0, 0, 0,

              5,9, 0, 0, 0,

              4,6, 8, 0, 0,

              2,3, 44,55,0,

              7,11,12,13,14

       };

       intb[30],x,y,k;

       printf("原二维数组:\n");    //输出原二维数组

   for(x=0;x<5;x++)

       {

              for(y=0;y<5;y++)

              {

                     printf("%d",a[x][y]);

              }

              printf("\n");

       }

       printf("压缩后的一维数组:\n");

       intt=0;              

   for(int i=0;i<5;i++)        //将二维数组中非0值压缩至一维数组中

       {

              for(intj=0;j<5;j++)

              {

                     if(i>=j)              //特殊矩阵,只压下三角的值

                     {

                            k=i*(i+1)/2+j;          //二维数组和一维数组中原值的对应关系

                            b[k]=a[i][j];   

                            t++;

                     }

                     else

                            b[15]=0;        

              }

       }

       for(intl=0;l<t;l++)      //输出一维数组

       {

              printf("%d",b[l]);

       }

       printf("\n");

   printf("输入要查询的行号 列号:");   //输出要查询的数据

   printf("\n");

       scanf("%d%d",&x,&y);

       printf("您查询的数据是:\n");

       if(x<y)         //如果上三角直接输出0

       printf("0\n");

       else           //下三角输出一维数组中对应的值

   printf("%d\n",b[(x-1)*(x)/2+y-1]);

       return0;

}
原创粉丝点击