输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行为整数k,表示有k组数据。
每组数据有多行组成,表示一个矩阵:
第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以空格分隔。
接下来输入的m行数据中,每行包含n个整数,整数之间以空格作为间隔。
输出
输出对应矩阵的边缘元素和,一个一行。
#include <iostream>
using namespace std;
int main(){
int k=0;
cin>>k;
while(k--){
int m,n;
cin>>m>>n;
int **p=new int*[m];
for(int i=0;i<m;i++){
p[i]=new int[n];
}//二维数组的动态分配,注意类型
int result=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>p[i][j];
}
}
for (int c=0;c<m;c++){
for (int d=0;d<n;d++){
if (c==0||c==m-1||d==0||d==n-1) result+=p[c][d];
}
}
cout<<result<<endl;
for(int i=0;i<m;i++) delete []p[i];//释放
}
return 0;
}