信息学奥赛一本通 1121:计算矩阵边缘元素之和 | OpenJudge NOI 1.8 03:计算矩阵边缘元素之和
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1121:计算矩阵边缘元素之和 | OpenJudge NOI 1.8 03:计算矩阵边缘元素之和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1121:計算矩陣邊緣元素之和
OpenJudge NOI 1.8 03:計算矩陣邊緣元素之和
【題目考點】
1. 二維數組
【解題思路】
解法1:遍歷外圈
- 一個m行n列的矩陣,其邊緣元素分別為:第1行,最后一行(第m行),第1列,最后一列(第n列)。
- 行和列之間有交點,交點在矩陣的四個角。所以在遍歷第1行,第m行元素后,在遍歷列元素時,從第2行遍歷到第n-1行,避開矩陣四角的位置。這樣就避免了重復計算。
- 矩陣若只有1行,那么第1行和第m行只需要加一次。矩陣若只有1列,第1列和第n列只需要加一次。
解法2:遍歷矩陣
遍歷整個矩陣,選擇其中滿足條件的元素進行相加
【題解代碼】
解法1:遍歷外圈
#include<bits/stdc++.h> using namespace std; int main() {int a[101][101], m, n, sum = 0;//m行n列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)//第1列和第n列加和{sum += a[i][1];if(n != 1)//如果矩陣不是只有1列sum += a[i][n];}for(int j = 2; j <= n - 1; ++j)//第1行和第m行,除去兩端元素后,加和{sum += a[1][j];if(m != 1)//如果矩陣不是只有1行sum += a[m][j];}cout << sum;return 0; }解法2:遍歷矩陣
#include<bits/stdc++.h> using namespace std; int main() {int m, n, a[105][105], s = 0;cin >> m >> n;for(int i = 1; i <= m; i++)for(int j = 1; j <= n; ++j){ cin >> a[i][j];if(i == 1 || i == m || j == 1 || j == n)s += a[i][j];}cout << s;return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1121:计算矩阵边缘元素之和 | OpenJudge NOI 1.8 03:计算矩阵边缘元素之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通(2061:【例1.2】
- 下一篇: 信息学奥赛一本通 1022:整型与布尔