·一、實驗目的
實驗目的:練習多維陣列的用法
·二、實驗原理
鞍點(Saddle point)在微分方程中,沿著某一方向是穩定的,另一條方向是不穩定的奇點,叫做鞍點,在泛函中,既不是極大值點也不是極小值點的臨界點,叫做鞍點,在矩陣中,一個數在所在行中是最大值,在所在列中是最小值,則被稱為鞍點,在物理上要廣泛一些,指在一個方向是極大值,另一個方向是極小值的點,
找出一個二維陣列中的鞍點:在該位置上的元素在該行上最大、在該列上最小,有的陣列有鞍點,有的沒有,
·三、主要資料結構和演算法
演算法分析

·四、實驗結果及分析
測驗結果截圖
(1)第一組測驗資料及結果截圖

(2)第二組測驗資料及結果截圖

(3)第三組測驗資料及結果截圖

·五、心得體會
1 理解鞍點的特點,根據其設計演算法;
2 分清行號i和列號j所對應的數值含義
3 設立標記,flag,類似于bool型別
·六、源檔案
#include <stdio.h> int main() { int i, j, k, a[4][5], max, maxj, flag; for (i = 0; i < 4; i++) //輸入陣列 for (j = 0; j < 5; j++) scanf("%d", &a[i][j]); for (i = 0; i < 4; i++) { max = a[i][0]; //開始時假設a[i][0]最大 maxj = 0; //將列號賦給maxj for(j=0;j<5;j++) if (a[i][j] > max) { max = a[i][j]; //將本行的最大數存放在max中 maxj = j; //將最大數所在的列號存賦值給maxj } flag = 1; //以flag為1表示鞍點 for(k=0;k<4;k++) if (max > a[k][maxj]) //將最大數和其同列元素相比 { flag = 0; //如果max不是同列最小,表示不是鞍點,令flag=0; continue; } if(flag) //如果flag為1表示鞍點 { printf("a[%d][%d]=%d\n", i, maxj, max);//輸出鞍點的值和所在行列號 break; } } if (!flag) //如果flag為0表示鞍點不存在 printf("Not found.\n"); return 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285694.html
標籤:其他
上一篇:輸出鞍點
下一篇:輸出魔方陣
