C語言算法練習(xí)之求二維數(shù)組最值問題
一、問題描述
求二維數(shù)組最大最小值
問題的描述
如下幾點所示
1.在n 行 n 列的二維整數(shù)數(shù)組中,按以下要求選出兩個數(shù)。
2.首先從每行選出大數(shù),再從選出 的 n 個大數(shù)中選出小數(shù);
3.其次,從每行 選出小數(shù),再從選出的 n 個小數(shù)中選出大數(shù)。
二、算法實例編譯環(huán)境
本文C語言經(jīng)典算法實例的編譯環(huán)境,使用的是集成開發(fā)環(huán)境:Visual Studio 2019
Visual Studio 2019官網(wǎng)鏈接如下
Visual Studio 2019集成的開發(fā)環(huán)境的特點有
- Visual Studio 2019默認(rèn)安裝Live Share代碼協(xié)作服務(wù)。
- 幫助用戶快速編寫代碼的新歡迎窗口、改進搜索功能、總體性能改進。
- Visual Studio IntelliCode AI幫助。
- 更好的Python虛擬和Conda支持。
- 以及對包括WinForms和WPF在內(nèi)的.NET Core 3.0項目支持等
三、算法實例實現(xiàn)過程
3.1、包含頭文件
包含頭文件 代碼如下所示
#include <stdio.h> #include <stdlib.h>
將要用到的C語言頭文件包含近年來。
3.2、定義宏和聲明數(shù)組
定義宏和聲明數(shù)組 代碼如下所示
#define MAXN 20 int a[MAXN][MAXN];
定義了MAXN ,代表了MAXN為常數(shù)20。
聲明了數(shù)組a。
3.3、聲明相關(guān)變量
聲明相關(guān)變量 代碼如下所示
int min, max; int row, col, n;
聲明相關(guān)變量min, max,row, col, n;
3.4、輸入數(shù)組(方陣)的階
輸入數(shù)組(方陣)的階 代碼如下所示
printf("Please input the order of the matrix:");/* 輸入方陣的階次 */ scanf("%d", &n); printf("\nPlease input the elements of the matrix,\nfrom a[0][0] to a[%d][%d]:\n", n - 1, n - 1); for (row = 0; row < n; row++) { for (col = 0; col < n; col++) { scanf("%d", &a[row][col]); } }
根據(jù)文字提示,輸入數(shù)組(方陣)的階。
根據(jù)文字提示,向數(shù)組中輸入數(shù)據(jù)。
3.5、輸出 “輸入的數(shù)組”
輸出 “輸入的數(shù)組” 代碼如下所示
printf("\nThe original matrix is\n"); for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { printf("%d ", a[row][col]); } printf("\n"); } printf("\n");
輸出 我們向數(shù)組中輸入的數(shù)據(jù)。
按F5進行編譯,調(diào)試結(jié)果如下所示。
可以正確的輸出我們向數(shù)組中輸入的數(shù)據(jù)。
3.6、計算每行最大數(shù)據(jù)中的 最小的那一個數(shù)字
計算每行最大數(shù)據(jù)中的 最小的那一個數(shù)字代碼如下所示
for (min = a[0][0], row = 0; row < n; row++) { for (max = a[row][0], col = 1; col < n; col++) /*從 row 行選出大數(shù) */ { if (max < a[row][col]) { max = a[row][col]; } } if (row == 0) /* 保存至 row 行的小數(shù) */ { min = max; } else if (min > max) { min = max; } } printf("The minimum of maximum number is %d\n", min);
先從每行選出大數(shù)
再從選出 的 n 個大數(shù)中選出小數(shù);
按F5進行編譯,調(diào)試結(jié)果如下所示。
3.6.1 二階數(shù)組調(diào)試的結(jié)果
3.6.2 三階數(shù)組調(diào)試的結(jié)果
3.7、計算每行最小數(shù)據(jù)中的 最大的那一個數(shù)字
計算每行最小數(shù)據(jù)中的 最大的那一個數(shù)字 代碼如下所示
for (max = a[0][0], row = 0; row < n; row++) { for (min = a[row][0], col = 1; col < n; col++) /* 從 row 行選出小數(shù) */ { if (min > a[row][col]) { min = a[row][col]; } } if (row == 0) /*保存至 row 行的大數(shù) */ { max = min; } else if (max < min) { max = min; } } printf("\nThe maximum of minimum numbers is %d\n", max);
先從每行 選出小數(shù),
再從選出的 n 個小數(shù)中選出大數(shù)。
按F5進行編譯,調(diào)試結(jié)果如下所示。
3.7.1 二階數(shù)組調(diào)試的結(jié)果
3.7.2 三階數(shù)組調(diào)試的結(jié)果
四、經(jīng)典算法實例程序
完整代碼
經(jīng)典算法實例程序完整代碼如下所示
4.1、main.h文件
#pragma once #include <stdio.h> #include <stdlib.h>
4.2、main.c文件
#define _CRT_SECURE_NO_WARNINGS #include "Main.h" #define MAXN 20 int a[MAXN][MAXN]; int main() { system("color 3E"); int min, max; int row, col, n; printf("Please input the order of the matrix:");/* 輸入方陣的階次 */ scanf("%d", &n); printf("\nPlease input the elements of the matrix,\nfrom a[0][0] to a[%d][%d]:\n", n - 1, n - 1); for (row = 0; row < n; row++) { for (col = 0; col < n; col++) { scanf("%d", &a[row][col]); } } printf("\nThe original matrix is\n"); for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) { printf("%d ", a[row][col]); } printf("\n"); } printf("\n"); for (min = a[0][0], row = 0; row < n; row++) { for (max = a[row][0], col = 1; col < n; col++) /*從 row 行選出大數(shù) */ { if (max < a[row][col]) { max = a[row][col]; } } if (row == 0) /* 保存至 row 行的小數(shù) */ { min = max; } else if (min > max) { min = max; } } printf("The minimum of maximum number is %d\n", min); for (max = a[0][0], row = 0; row < n; row++) { for (min = a[row][0], col = 1; col < n; col++) /* 從 row 行選出小數(shù) */ { if (min > a[row][col]) { min = a[row][col]; } } if (row == 0) /*保存至 row 行的大數(shù) */ { max = min; } else if (max < min) { max = min; } } printf("\nThe maximum of minimum numbers is %d\n", max); system("pause"); return 0; }
五、總結(jié)
本文的C語言經(jīng)典算法實例:求二維數(shù)組最大最小值,要實現(xiàn)的目標(biāo)如下
- 在n 行 n 列的二維整數(shù)數(shù)組中,按以下要求選出兩個數(shù)。
- 首先從每行選出大數(shù),再從選出 的 n 個大數(shù)中選出小數(shù);
- 其次,從每行 選出小數(shù),再從選出的 n 個小數(shù)中選出大數(shù)。
到此這篇關(guān)于C語言算法練習(xí)之求二維數(shù)組最值問題的文章就介紹到這了,更多相關(guān)C語言求數(shù)組最值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言深入講解動態(tài)內(nèi)存分配函數(shù)的使用
這篇文章主要介紹了C語言動態(tài)內(nèi)存分配,C語言內(nèi)存管理相關(guān)的函數(shù)主要有realloc、calloc、malloc、free、柔性數(shù)組等,下面這篇文章帶大家了解一下2022-05-05C語言用循環(huán)單鏈表實現(xiàn)約瑟夫環(huán)
這篇文章主要為大家詳細(xì)介紹了C語言用循環(huán)單鏈表實現(xiàn)約瑟夫環(huán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10C++11?成員函數(shù)作為回調(diào)函數(shù)的使用方式
這篇文章主要介紹了C++11?成員函數(shù)作為回調(diào)函數(shù)的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11C語言 深入解讀數(shù)據(jù)結(jié)構(gòu)之堆的實現(xiàn)
堆就是用數(shù)組實現(xiàn)的二叉樹,所以它沒有使用父指針或者子指針。堆根據(jù)“堆屬性”來排序,“堆屬性”決定了樹中節(jié)點的位置2021-11-11解決在Mac下直接解壓C++靜態(tài)庫出現(xiàn)的問題
最近在研究C++的各種編譯構(gòu)建過程,學(xué)習(xí)了一下cmake,gyp/ninja這些自動化構(gòu)建工具后,想著自己試下用純命令行跑一遍編譯流程。在試圖把C++靜態(tài)庫編譯為動態(tài)庫的過程中遇到了棘手的問題,找了好久后發(fā)現(xiàn)是跟Mac平臺相關(guān)的,這里記錄一下,望對遇到類似問題的童鞋有幫助。2016-12-12