求矩阵对角线元素的最大值
求主对角线元素的最大值时,让指针指向A[N-1][N-1],指针以(N+1)为单位递增,就可以指向对角线每个元素;
求次对角线元素的最大值时,让指针指向A[0][N-1],指针以(N-1)为单位递增,就可以指向副对角线每个元素。
源程序
#define N 4
typedef int fix_matrix[N][N];
int seek_pdiagmax_opt(fix_matrix A);
int seek_sdiagmax_opt(fix_matrix A);
void main()
{
fix_matrix A;
int i,j,pmax,smax;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
A[i][j]=(i*j+1)*2;
pmax=seek_pdiagmax_opt(A);
smax=seek_sdiagmax_opt(A);
//while(1);
}
int seek_pdiagmax_opt(fix_matrix A) //求主对角线元素最大值
{
int *Abase=&A[0][0];
int val,index=0;
val=Abase[index];
do
{
index+=(N+1);
if(val<Abase[index])
val=Abase[index];
}while(index<(N+1)*(N-1));
return val;
}
int seek_sdiagmax_opt(fix_matrix A) //求次对角线元素最大值
{
int *Abase=&A[0][N-1];
int val,index=0;
val=Abase[index];
do
{
index+=(N-1);
if(val<Abase[index])
val=Abase[index];
}while(index<(N-1)*(N-1));
return val;
}