當前位置:編程學習大全網 - 編程語言 - C語言編程:找出壹個二維數組的“鞍點”,即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點。

C語言編程:找出壹個二維數組的“鞍點”,即該位置上的元素在該行上最大,在該列上最小。也可能沒有鞍點。

思路:遍歷矩陣的每壹行,找出最大值,在最大值對應的列找最小值,然後判斷最大值和最小值的位置是否相等。具體代碼如下:

#include?<stdio.h>

#include<stdlib.h>

void?FindSaddlePoint(int?a[][20],?int?m,?int?n);

main()

{

int?a[20][20];?//數組儲存矩陣

int?m,n;?//分別表示矩陣的行數和列數

int?i,j;?//循環變量

//人機交互輸入數據

printf("Input?m,n:\n");

scanf("%d,%d",&m,&n);

printf("Input?matrix:\n"?);

for(i=0;i<m;i++)

{

for(j=0;j<n;j++)

scanf("%d",&a[i][j]);

}

FindSaddlePoint(a,m,n);

system("pause");

}

//函數功能:輸入矩陣數組、行數和列數,判斷是否存在鞍點並輸出結果

void?FindSaddlePoint(int?a[][20],?int?m,?int?n)

{

int?i,j,k;?//循環變量

int?b,c,d;?//儲存下標:b和d儲存最大值的下標,d儲存最小值的下標

int?flag=0;?//判斷是否有鞍點:值為1則有,值為0則無

int?max,min;?//每行中的最大值和每列中的最小值

//第壹層循環遍歷每壹行

for(i=0;i<m;i++)

{

//先該行中的第壹個數賦值給最大值並保存其位置

max=a[i][0];

b=i;

d=0;

//找出每壹行中的最大值的值及位置

for(j=0;j<n;j++)

{

if(max<a[i][j])

{

max=a[i][j];

b=i;

d=j;

}

}

//先將找到的最大值賦值給最小值,作為初值並存儲下標(由於列是壹樣的所以只需要儲存行的位置即可)

min=max;

c=b;

//從找到的最大值中的那壹列找該列的最小值並存儲其位置

for(k=0;k<m;k++)

{

if(min>a[k][d])

{

min=a[k][d];

c=k;

}

}

//判斷最大值和最小值的位置是否相同

if(b==c)

{

flag=1;

break;

}

}

//輸出語句

if(flag==1)

printf("a[%d][%d]?is?%d\n",b,d,max);

else

printf("No?saddle?point!\n");

}

  • 上一篇:足球計劃怎麽寫
  • 下一篇:學習數控技術需要具備哪些條件?
  • copyright 2024編程學習大全網