稀疏矩阵类型判断

#include<bits/stdc++.h>

using namespace std;

#define MAX 100

void getstd(int m,int n,int num[MAX][MAX]){

    for(int i=0;i<m;i++){

        for(int j=0;j<n;j++){

            cin>>num[i][j];

        }

    }

}

bool iskong(int m,int n,int num[MAX][MAX]){

    for(int i=0;i<m;i++){

        for(int j=0;j<n;j++){

            if(num[i][j]!=0) return false;

        }

    }

    return true;

}

bool isshangsanjiao(int m,int n,int num[MAX][MAX]){

    for(int i=0;i<m;i++){

        for(int j=0;j<i;j++){

            if(num[i][j]!=0) return false;

        }

    }

    return true;

}

bool isxiasanjiao(int m,int n,int num[MAX][MAX]){

    for(int i=0;i<m;i++){

        for(int j=i+1;j<n;j++){

            if(num[i][j]!=0) return false;

        }

    }

    return true;

}

bool isduichen(int m,int n,int num[MAX][MAX]){

    for(int i=0;i<m;i++){

        for(int j=i-1;j<n&&j>=0;j++){

            if(num[i][j]!=num[j][i]) return false;

        }

    }

    return true;

}

int main(){

    //freopen("/config/workspace/test/test","r",stdin);

    int m,n;

    while(cin>>m>>n){

        int num[MAX][MAX];

        getstd(m,n,num);

        if(m==n){

            if(iskong(m,n,num)){

                cout<<"kong"<<endl;

            }else if(isshangsanjiao(m,n,num)){

                cout<<"shangsanjiao"<<endl;

            }else if(isxiasanjiao(m,n,num)){

                cout<<"xiasanjiao"<<endl;

            }else if(isduichen(m,n,num)){

                cout<<"duichen"<<endl;

            }else{

                cout<<"putong"<<endl;

            }

        }else{

            cout<<"putong"<<endl;

        }

    }

    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
稀疏矩阵是指矩阵中绝大多数元素都是0的矩阵。在C语言中,可以用二维数组来表示矩阵,而稀疏矩阵可以用三元组表示法来表示。三元组表示法是指用三个数组来存储非零元素的行下标、列下标和值信息,可以节省存储空间。 在判断一个矩阵是否稀疏矩阵时,通常可以计算矩阵中非零元素的个数与矩阵中元素的总数的比值。如果比值小于一个阈值,就可以认为矩阵稀疏矩阵。阈值的选取可以根据实际应用场景和需求来确定。 以下是一个用C语言编写稀疏矩阵判断的示例代码: ```c #include <stdio.h> #define ROW 4 #define COL 4 typedef struct { int row; int col; int val; } Triple; int isSparseMatrix(int matrix[ROW][COL], double threshold) { int i, j, cnt = 0; for (i = 0; i < ROW; i++) { for (j = 0; j < COL; j++) { if (matrix[i][j] != 0) cnt++; } } double ratio = (double)cnt / (ROW * COL); if (ratio < threshold) return 1; else return 0; } int main() { int matrix[ROW][COL] = { {0, 0, 0, 1}, {0, 0, 2, 0}, {0, 3, 0, 0}, {4, 0, 0, 0} }; if (isSparseMatrix(matrix, 0.5)) { printf("The matrix is sparse.\n"); } else { printf("The matrix is not sparse.\n"); } return 0; } ``` 在这个示例代码中,isSparseMatrix函数用于判断一个矩阵是否稀疏矩阵。它首先遍历矩阵中所有元素,统计非零元素的个数,然后计算非零元素的个数与矩阵中元素的总数的比值,如果比值小于阈值threshold,就返回1,否则返回0。在main函数中,我们定义了一个4x4的矩阵,并将它传递给isSparseMatrix函数进行判断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值