I Got a Matrix!

    xiaoxiao2023-10-23  160

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    I Got a Matrix!

    题目

    给定一个 n ∗ m 的矩阵 A,询问位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

    输入

    第一行包含两个整数 n 和 m。 之后 n 行每行包含 m 个整数 Ai,j。

    输出

    共一行包含一个整数 ans,表示位于矩阵边缘的元素之和。

    输入样例

    3 3 3 4 1 3 7 1 2 0 1

    输出样例

    15

    数据范围

    对于 100% 的数据:n, m ≤ 100

    思路

    这道题就是一道模拟题,我们枚举矩阵的边,在一个一个加起来就可以了。 不过我这里要处理一下行数为一的情况。因为我是上下边缘一起加,但是当行数为一时,一起加的时候边缘就会多加一次,所以这里加了一个特判。 还有一点就是,因为如果直接枚举矩阵的左右边缘和上下边缘,矩阵的四个角就会各多加一次。所以我在这里枚举矩阵的左右边缘时,忽略掉矩阵的四个角。

    代码

    #include<cstdio> using namespace std; int n,m,ans,a[101][101]; int main() { scanf("%d%d",&n,&m);//读入 for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) scanf("%d",&a[i][j]);//读入 if (n==1) for (int i=1;i<=m;i++) ans+=a[1][i];//处理行数为一的特殊情况 else for (int i=1;i<=m;i++)//枚举矩阵的上下边缘 ans+=a[1][i]+a[n][i]; for (int i=2;i<=n-1;i++)//枚举矩阵的左右边缘(记得要忽略矩阵的四个角) ans+=a[i][1]+a[i][m]; printf("%d",ans);//输出 return 0; }

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    最新回复(0)