题目描述
输入一个稀疏矩阵,输出其类型。类型包括:
上三角:对角线及其右上方的元素非0,其它元素为0
下三角:对角线及其左下方的元素非0,其它元素为0
对称:沿对角线对称的元素非0且相等
空矩阵:所有元素都为0
其它为普通矩阵
输入格式
输入包括多组数据
每组数据的第一行为正整数m和n,分别代表矩阵的行数和列数,接下来跟着m行,每行是空格隔开的n个整数
输出格式
对输入的每组数据,输出矩阵类型对应的汉语拼音。
输入样例 复制
3 3
1 1 2
0 1 3
0 0 2
2 2
1 0
1 1
3 3
1 2 3
2 1 4
3 4 1
2 2
0 0
0 0
2 2
1 2
3 4
输出样例 复制
shangsanjiao
xiasanjiao
duichen
kong
putong
#include<bits/stdc++.h>
using
namespace
std;
int
main()
{
int
m,n;
while
(cin>>m>>n){
int
a[m][n];
int
num1=0;
int
num2=0;
int
num3=0;
int
num4=1;
for
(
int
i=0;i<m;i++){
for
(
int
j=0;j<n;j++){
cin>>a[i][j];
}
}
for
(
int
i=0;i<m;i++){
for
(
int
j=i+1;j<n;j++){
if
(a[i][j]!=0){
num1=1;
break
;
}
}
}
for
(
int
i=0;i<m;i++){
for
(
int
j=0;j<i;j++){
if
(a[i][j]!=0){
num2=1;
break
;
}
}
}
for
(
int
i=0;i<m;i++){
if
(a[i][i]!=0){
num3=1;
break
;
}
}
for
(
int
i=0;i<m;i++){
for
(
int
j=0;j<i;j++){
if
(a[i][j]!=a[j][i]){
num4=0;
break
;
}
}
}
if
(num1==1 && num2==0 && num3==1) cout<<
"shangsanjiao"
<<endl;
else
if
(num1==0 && num2==1 && num3==1) cout<<
"xiasanjiao"
<<endl;
else
if
(num1==1 && num2==1 && num4==1) cout<<
"duichen"
<<endl;
else
if
(num1==0 && num2==0 && num3==0) cout<<
"kong"
<<endl;
else
cout<<
"putong"
<<endl;
}
return
0;
}