电子协会 C语言 2级 14 、 计算矩阵边缘元素之和
C++:方法1
/*
电子协会 C语言 2级 14 、 计算矩阵边缘元素之和 不用数组
http://noi.openjudge.cn/ch0108/03/
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第
一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行分别为矩阵的行数 m 和列数 n(m<100,n<100),两者之间以一个空格分开。
接下来输入的 m 行数据中,每行包含 n 个整数,整数之间以一个空格分开。
输出
输出对应矩阵的边缘元素和。
输入样例
3 3
3 4 1
3 7 1
2 0 1
输出样例
15
*/
#include <iostream>
using namespace std;
int main()
{
int m, n, sum = 0, x;
cin >> m >> n;
for ( int i = 1; i <= m; i++)
for ( int j = 1; j <= n; j++)
{
cin >> x;
if( i == 1 || i == m || j == 1 || j == n )
sum = sum + x;
}
cout << sum << endl;
return 0;
}
C++:方法2
/*
电子协会 C语言 2级 14 、 计算矩阵边缘元素之和 方法2
http://noi.openjudge.cn/ch0108/03/
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第
一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行分别为矩阵的行数 m 和列数 n(m<100,n<100),两者之间以一个空格分开。
接下来输入的 m 行数据中,每行包含 n 个整数,整数之间以一个空格分开。
输出
输出对应矩阵的边缘元素和。
输入样例
3 3
3 4 1
3 7 1
2 0 1
输出样例
15
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[10001][10001];
int b[10001][10001];
int ans[10001][10001];
int now;
int tot;
int main()
{
int n,m,k;
cin>>n>>m;
for(int i=1;i<=n;i++ )
{
for(int j=1;j<=m;j++ )
{
cin>>a[i][j];
if(i==1||j==1||i==n||j==m)
{
tot=tot+a[i][j];
}
}
}
cout<<tot;
return 0;
}
C++:方法3
/*
电子协会 C语言 2级 14 、 计算矩阵边缘元素之和 方法3
http://noi.openjudge.cn/ch0108/03/
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第
一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行分别为矩阵的行数 m 和列数 n(m<100,n<100),两者之间以一个空格分开。
接下来输入的 m 行数据中,每行包含 n 个整数,整数之间以一个空格分开。
输出
输出对应矩阵的边缘元素和。
输入样例
3 3
3 4 1
3 7 1
2 0 1
输出样例
15
*/
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[101][101];
int m,n,s=0;
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
if(i==1 || j==1 || i==m || j==n)
{
s+=a[i][j];
}
}
cout<<s<<endl;
}
C++:方法4
/*
1.8编程基础之多维数组_03计算矩阵边缘元素之和 方法4
http://noi.openjudge.cn/ch0108/03/
*/
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int num[110][110];
int main(){
int m, n;
int sum = 0;
cin >> m >> n;
for ( int i = 1; i <= m; i++)
for ( int j = 1; j <= n; j++)
scanf("%d",&num[i][j]);
//cin >> num[i][j];
if (m==1 && n==1)
{
sum=num[1][1];
cout<<sum<<endl;
return 0;
}
//第1行
for ( int j = 1; j <= n; j++)
sum = sum + num[1][j];
//最后1行
if ( m>1 )
{
for ( int j = 1; j <= n; j++)
sum = sum + num[m][j];
}
if( m>2)
{
for ( int j = 2; j <= m - 1; j++)
sum = sum + num[j][1];
}
if( m>2 && n>2)
{
for ( int j = 2; j <= m - 1; j++)
sum = sum + num[j][n];
}
printf("%d\n",sum);
//cout << sum << endl;
return 0;
}
C++:方法5
/*
电子协会 C语言 2级 14 、 计算矩阵边缘元素之和 方法5
http://noi.openjudge.cn/ch0108/03/
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第
一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行分别为矩阵的行数 m 和列数 n(m<100,n<100),两者之间以一个空格分开。
接下来输入的 m 行数据中,每行包含 n 个整数,整数之间以一个空格分开。
输出
输出对应矩阵的边缘元素和。
输入样例
3 3
3 4 1
3 7 1
2 0 1
输出样例
15
*/
#include <iostream>
using namespace std;
int main(){
int num[101][101], n, m, sum = 0;
cin >> m >> n;
for ( int i = 1; i <= m; ++i)
for ( int j = 1; j <= n; ++j)
cin >> num[i][j];
if ( m == 1)
{
if ( n != 1)
{
for ( int i = 1; i <= n; i++)
sum = sum + num[1][i];
cout << sum << endl;
return 0;
}
else
{
cout << num[1][1] << endl;
return 0;
}
}
if ( n == 1)
{
if ( m != 1)
{
for ( int i = 1; i <= m; i++)
sum = sum + num[i][1];
cout << sum << endl;
return 0;
}
else
{
cout << num[1][1] << endl;
return 0;
}
}
for ( int i = 1; i <= m; ++i)
sum = sum + num[i][1];
for ( int i = 1; i <= m; ++i)
sum = sum + num[i][n];
for ( int i = 2; i <= n-1; ++i)
sum = sum + num[1][i];
for ( int i = 2; i <= n-1; ++i)
sum = sum + num[m][i];
cout << sum << endl;
return 0;
}
C++:方法6
/*
电子协会 C语言 2级 14 、 计算矩阵边缘元素之和 方法6
http://noi.openjudge.cn/ch0108/03/
输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第
一行和最后一行的元素以及第一列和最后一列的元素。
输入
第一行分别为矩阵的行数 m 和列数 n(m<100,n<100),两者之间以一个空格分开。
接下来输入的 m 行数据中,每行包含 n 个整数,整数之间以一个空格分开。
输出
输出对应矩阵的边缘元素和。
输入样例
3 3
3 4 1
3 7 1
2 0 1
输出样例
15
*/
#include<iostream>
using namespace std;
int main()
{
int i,j,n,m,sum=0;;
cin>>n>>m;
int a[n+1][m+1];
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
cin>>a[i][j];//读入元素
if(i==1||i==n||j==1||j==m)//判断是不是边缘
sum=sum+a[i][j];//如果时,累加
}
}
cout<<sum;
return 0;
}
python3代码:
"""
1.8编程基础之多维数组 03 计算矩阵边缘元素之和
http://noi.openjudge.cn/ch0108/03/
"""
sum=0
a = []
m,n=map(int,input().split())
for i in range(m):
a.append(list(map(int,input().split())))
for i in range(m):
for j in range(n):
if i==0 or i==m-1 or j==0 or j==n-1 :
sum+=a[i][j]
print(sum)
推荐几本编程启蒙书籍
推荐几本编程启蒙书籍_dllglvzhenfeng的博客-CSDN博客_编程书籍推荐
少儿编程:C++绘图相关书籍篇
少儿编程:C++绘图相关书籍篇_dllglvzhenfeng的博客-CSDN博客_儿童c++
C++游戏入门书籍推荐
C++游戏入门书籍推荐_dllglvzhenfeng的博客-CSDN博客_c++游戏编程入门
动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)
动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)_dllglvzhenfeng的博客-CSDN博客_cspj考试大纲
动画学信奥 漫画学算法 CSP-J入门级 (二)、C++程序设计 数据结构(依据「NOI大纲」)
动画学信奥 漫画学算法 CSP-J入门级 (二)、C++程序设计 数据结构(依据「NOI大纲」)_dllglvzhenfeng的博客-CSDN博客_csp-j 数据结构
动画学信奥 漫画学算法 CSP-J入门级 (三)、算法(依据「NOI大纲」)
动画学信奥 漫画学算法 CSP-J入门级 (三)、算法(依据「NOI大纲」)_dllglvzhenfeng的博客-CSDN博客
NOI入门级:基础算法 贪心法
NOI入门级:基础算法 贪心法_dllglvzhenfeng的博客-CSDN博客
NOI入门级:算法之动态规划
NOI入门级:算法之动态规划_dllglvzhenfeng的博客-CSDN博客
信息学竞赛有什么好的比赛网站?
信息学竞赛有什么好的比赛网站?_dllglvzhenfeng的博客-CSDN博客_信息学竞赛网站
【强基计划】数学与物理竞赛中的微积分部分视频
【强基计划】数学与物理竞赛中的微积分部分视频_dllglvzhenfeng的博客-CSDN博客