洛谷B2101 计算矩阵边缘元素之和

题目来源

题目来源:计算矩阵边缘元素之和 - 洛谷

题目描述

输入一个整数矩阵,计算位于矩阵边缘的元素之和。

所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

输入格式

第 1 行包含两个整数,分别为行数 m 和列数 n,两个整数之间空格隔开。

第 2 行开始有 m 行数据,每行包含 n 个整数,整数之间空格隔开。

输出格式

对应矩阵的边缘元素和。

思路

原来我打算用小学数学的方式解题

#include<iostream>
using namespace std;
int main(){
	int m,n,b=0;
	cin>>m>>n;
	int a[101][101];//定义二维数组
	for(int i=0;i<m;i++){//输入
		for(int j=0;j<n;j++){
			cin>>a[j][i];
		}
	}
	for(int i=0;i<m;i++){//算第一列
		b+=a[0][i];
	}
	for(int i=0;i<m;i++){//算最后一列
		b+=a[n-1][i];
	}
	for(int i=1;i<n-1;i++){//算第一行去首尾
		b+=a[i][0];
	}
	if(m!=1){
		for(int i=1;i<n-1;i++){//算最后一行去首尾
			b+=a[i][m-1];
		}
	}
	cout<<b<<endl;
	return 0;//良好习惯
}  

停!!!

不要急着复制

压根就不对

问题是那一个测试点咋错的

哪方面我没想到

在计算了七七八十一分钟后

决定

··· ···看题解

参考题解:题解

于是我懂了!!!!!!

#include<iostream>
using namespace std;
int main(){
	int m,n;
	cin>>m>>n;
	int t,num;
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			cin>>t;
			if((i==0||i==m-1)||(j==0||j==n-1)){
				num+=t;
			}
		}
	}
	cout<<num<<endl;
	return 0;
}  

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值