数据结构(一)求矩阵中的鞍点
生活随笔
收集整理的這篇文章主要介紹了
数据结构(一)求矩阵中的鞍点
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.實(shí)驗(yàn)?zāi)康?#xff1a;掌握二維數(shù)組的計(jì)算,以及常用字符函數(shù)的使用。
2.實(shí)驗(yàn)問題:設(shè)計(jì)一個(gè)查找鞍點(diǎn)的算法。一個(gè)二維數(shù)組中的鞍點(diǎn),是指該位置上的元素,在所在行中最大,而在所在列中最小;一個(gè)二維數(shù)組也可能沒有鞍點(diǎn)。
3.解題思路:可用二維數(shù)組保存元素,按照鞍點(diǎn)的定義,只要找出一些點(diǎn),在該點(diǎn)位置上的元素,在該行最大,在該列上最小即可??梢韵日页龅趇行上最大的元素,記下所在的列號(hào)c,最大元素的值rmax;然后在第c列上,把rmax和該列上的其他元素比較,判斷該列上rmax是否是最小的元素,只要有一個(gè)元素是小于它,則說明rmax在該列上不是最小元素;若rmax是c列上最小的,則找到鞍點(diǎn),打印此鞍點(diǎn)的值,然后重復(fù)以上步驟,直至所有的行查找完畢。
4.程序?qū)崿F(xiàn):
/* 查找鞍點(diǎn) */ #include "stdio.h" #define m 3 #define n 3 int find(int R[m][n]) /*查找鞍點(diǎn)函數(shù)*/{int i,j,flag,rmax,k,c;i=0;flag=0;while((i<m) && (!flag)){rmax=R[i][0];c=0;for(j=1;j<n;j++)if(rmax<R[i][j]) /*找出行中的最大值*/{rmax=R[i][j];c=j;}flag=1;k=0;while(k<m && flag) /*判斷行中最大值是否是列中最小值*/{if(k!=i)if(R[k][c]<=rmax)flag=0;k++;}if(flag) /*標(biāo)記flag為1,表示找到鞍點(diǎn)并輸出鞍點(diǎn)值*/printf("鞍點(diǎn)是R[%d][%d]:%d\n",i,c,R[i][c]);i++;}if(!flag)printf("沒有鞍點(diǎn)!\n");} main() { int K[m][n],i,j; for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",&K[i][j]); find(K); /*調(diào)用查找鞍點(diǎn)函數(shù)*/ }5.測(cè)試數(shù)據(jù):設(shè)計(jì)測(cè)試用例,如A[2][3]=(1,2,3,4,5,6,7,8,9);測(cè)試結(jié)果:3
總結(jié)
以上是生活随笔為你收集整理的数据结构(一)求矩阵中的鞍点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GBase 8s SQL 指南:教程——
- 下一篇: 三电极体系电化学测量模组