您的位置:首页 > 其它

输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

2018-01-31 07:21 696 查看


输入

第一行为整数k,表示有k组数据。

每组数据有多行组成,表示一个矩阵:

第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以空格分隔。

接下来输入的m行数据中,每行包含n个整数,整数之间以空格作为间隔。

输出

输出对应矩阵的边缘元素和,一个一行。
#include <cstdio>

#include <iostream>

using namespace std;

int main()

{
int m,n;
cin>>m>>n;
int a[m]
;
for (int i=0;i<m;i++)
for (int j=0;j<n;j++)
cin>>a[i][j];
int sum=0;
int x=0,y=0;
int xflag=0;
int yflag=1;
int count=n+m-1+n-1+m-2;
while (count>0)
{
 if (yflag==1)//行号不变,列号增加
 {

  sum+=a[x][y];
count--;
  y++;

  if
(y==n) {yflag=0;xflag=1;y--;x++;}
 }
 if (xflag==1)//行号增加,列号不变
 {
  sum+=a[x][y];
count--;
  x++;
  if
(x==m) {xflag=0;yflag=-1;x--;y--;}
 }
 if (yflag==-1)//列号减少,行号不变
 {

  sum+=a[x][y];
count--;
  y--;
  if
(y<0) {yflag=0;xflag=-1;y++;x--;}
 }
 if (xflag==-1)//行号减少,列号不变
 {
  sum+=a[x][y];
count--;
  x--;
  if
(x<0) {xflag=0;yflag=1;x++;y++;}

 } }

 cout<<sum<<endl;
 return 0;
}


panda711

#include<iostream>  

using namespace std;  

int main() {  

    int t;  

    cin >> t;  

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

        int m = 0, n = 0;  

        cin >> m >> n;  

        int shuzu[100][100];//矩阵最大100*100  

        int sum = 0;  

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

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

                cin >> shuzu[j][o];//输入数组数值  

                if (j == 0 || j == m - 1)//先算首行,末行  

                    sum += shuzu[j][o];  

                else if(o==0||o==n-1)//else 之后再用if 找除了四个角落之外的首列,末列  

                    sum += shuzu[j][o];  

            }  

        }  

        cout << sum << endl;  

    }  

    return 0;  

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  矩阵
相关文章推荐