- 若在矩阵Am×n中存在一个元素A[i-1[j-1],其满足A[i-1[j-1]是第i行元素中最小值,且又是第j列元素中最大值,则称此元素为该矩阵的一个马鞍点。用二维数组存储矩阵Am×n ,设计算法求出矩阵中所有马鞍点。(文件夹:习题5)
- 题目就是这么简单直接上代码。
#include <stdio.h> #include <malloc.h> #include <string.h> #include <math.h> #define maxsize 1024 typedef int datatype; const int m = 3; const int n = 3; typedef struct { datatype data[maxsize][maxsize] = {0}; datatype max[maxsize] = {0}, min[maxsize] = {0}; } array; void Init(array *&arr, int m, int n) { int i = 0; int j = 0; arr = (array *)malloc(sizeof(array)); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &arr->data[i][j]); } } } void Show(array *arr) { int i; int j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { printf("%d", arr->data[i][j]); } printf("\n"); } } void maxmin(array *arr) { int i, j; int max = 0; int min = 999; for (i = 0; i < m; i++) { max = 0; for (j = 0; j < n; j++) { if (arr->data[j][i] > max) { max = arr->data[j][i]; } } arr->max[i] = max; } for (i = 0; i < m; i++) { min = 999; for (j = 0; j < n; j++) { if (arr->data[i][j] < min) { min = arr->data[i][j]; } } arr->min[i] = min; } for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { if (arr->max[i] == arr->min[j]) { printf("%d", arr->max[i]); } } } } int main() { int m = 0, n = 0; int i, j; array *a; scanf("%d%d", &m, &n); Init(a, 3, 3); Show(a); maxmin(a); }
西电电院数据结构上机习题五马鞍点
最新推荐文章于 2023-01-01 09:09:06 发布