实验三 数组
一、 实验目的
1.熟悉数组的结构
2.掌握矩阵的压缩存储
3.能够对数组和矩阵的压缩存储进行运算
二、 实验内容
1. 若在矩阵Am×n中存在一个元素A[i-1[j-1],其满足A[i-1[j-1]是第i行元素中最小值,且又是第j列元素中最大值,则称此元素为该矩阵的一个马鞍点。用二维数组存储矩阵Am×n ,设计算法求出矩阵中所有马鞍点。(文件夹:习题11_4)
/*数组的结构类型定义.h*/
/*
const int m = 3;
const int n = 3;
*/
#define m 3
#define n 3
typedef struct
{
int A[m][n];
/*int max[m],min[n];*/ /* RenV: 我不知道这两个是干什么的 */
}
array;
#include"数组的结构类型定义.h"
void minmax( array * pa )
{
int row,col;
int temp;
row=0,col=0;
printf("Row/tCol/tNumber:/n");
for( row=0 ; row<m ; row++ )
{
col = rowmin(pa->A[row]);
if( row == colmax( pa->A , col ) )
{
printf("%d/t%d/t%d/n",row,col,pa->A[row][col]);
}
}
return ;
}
int rowmin( int p[] )
{
int j,col;
int t = p[0];
col = 0;
for( j=1 ; j<n ; j++ )
{
if( p[j]<t )
{
t = p[j];
col = j;
}
}
return col;
}
int colmax( int p[][n] , int col )
{
int i;
int row;
int temp;
row = 0;
temp = p[0][col];
for( i=1 ; i<m ; i++ )
{
if( p[i][col] > temp )
{
temp = p[i][col];
row = i;
}
}
return row;
}
/*找马鞍点的主程序文件.cpp*/
#include <stdio.h>
#include <stdlib.h>
#include"数组的结构类型定义.h"
int main()
{
/* array*pa=new array; */
array * pa = ( array* )malloc( sizeof(array) );
int i, j;
printf("Please Input Array[%d][%d]:/n",m,n);
for (i=0;i<m;i++)
for (j=0;j<n;j++)
/*cin>>pa->A[i][j];*/
scanf("%d",&(pa->A[i][j]));
minmax(pa);
system("PAUSE");
return 0;
}
本次实验围绕数组展开,目的是熟悉数组结构、掌握矩阵压缩存储及相关运算。实验内容为用二维数组存储矩阵,设计算法找出矩阵中所有马鞍点,即满足是所在行最小值且是所在列最大值的元素,并给出了相应的代码实现。
1687

被折叠的 条评论
为什么被折叠?



