数据结构(一)求矩阵中的鞍点
生活随笔
收集整理的這篇文章主要介紹了
数据结构(一)求矩阵中的鞍点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.實驗目的:掌握二維數組的計算,以及常用字符函數的使用。
2.實驗問題:設計一個查找鞍點的算法。一個二維數組中的鞍點,是指該位置上的元素,在所在行中最大,而在所在列中最小;一個二維數組也可能沒有鞍點。
3.解題思路:可用二維數組保存元素,按照鞍點的定義,只要找出一些點,在該點位置上的元素,在該行最大,在該列上最小即可。可以先找出第i行上最大的元素,記下所在的列號c,最大元素的值rmax;然后在第c列上,把rmax和該列上的其他元素比較,判斷該列上rmax是否是最小的元素,只要有一個元素是小于它,則說明rmax在該列上不是最小元素;若rmax是c列上最小的,則找到鞍點,打印此鞍點的值,然后重復以上步驟,直至所有的行查找完畢。
4.程序實現:
/* 查找鞍點 */ #include "stdio.h" #define m 3 #define n 3 int find(int R[m][n]) /*查找鞍點函數*/{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) /*標記flag為1,表示找到鞍點并輸出鞍點值*/printf("鞍點是R[%d][%d]:%d\n",i,c,R[i][c]);i++;}if(!flag)printf("沒有鞍點!\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); /*調用查找鞍點函數*/ }5.測試數據:設計測試用例,如A[2][3]=(1,2,3,4,5,6,7,8,9);測試結果:3
總結
以上是生活随笔為你收集整理的数据结构(一)求矩阵中的鞍点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GBase 8s SQL 指南:教程——
- 下一篇: html页面漏斗图,漏斗图 | JSha