找出二維數(shù)組中的鞍點
要做這道題的前提是我們要知道什么是鞍點。
鞍點:是在當(dāng)前位置上的元素在該行上最大在該列上最小。有的數(shù)組可能沒有鞍點
比如 這張圖片中 66 就是 這個二維數(shù)組中的鞍點。它當(dāng)前行中最大,又在當(dāng)前列中最小
做這道題我們還要知道的點就是二維數(shù)組中不考慮重復(fù)的情況,如果鞍點存在,該鞍點一定是唯一的,即一個二維數(shù)組中只有一個鞍點
接下來看代碼,代碼中有詳細(xì)介紹
int main()
{
int i, j;
int arr[3][4] = { 0 };
int max = 0;
int flag = 0;//如果找到了鞍點給它賦值 1
//輸入一個二維數(shù)組
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4;j++)
{
scanf("%d", &arr[i][j]);
}
}
//找鞍點
for (i = 0; i < 3; i++)
{
//讓max等于二維數(shù)組第 i 行的第一個元素
max = arr[i][0];
//記錄最大值所在的列
int t = 0;
//找出一行中的最大值并把值賦給 max
for (j = 1; j < 4; j++)
{
if (arr[i][j] > max)
{
max = arr[i][j];
t = j;
}
}
//判斷 max 是否為該列上最小的元素
for (j = 0; j < 3; j++)
{
//上邊的 t 記錄了 max 所在的列
//所以用 max 與該列的元素比較,看 max 是否為該列上最小的元素
if (max > arr[j][t])
{
//如果大于就跳出
break;
}
}
//如果全部比較完(也就是j==3的時候)說明 max 為當(dāng)列最小,max為鞍點
if (j == 3)
{
printf("找到了鞍點在:%d行%d列,為%d\n", i, j,arr[i][t]);
flag = 1;
break;//因為只有一個鞍點,所以找到了就退出循環(huán)
}
}
if (flag != 1)
{
printf("沒有找到鞍點 \n");
}
return 0;
}
運行結(jié)果
看到這個結(jié)果可不要驚訝,以為做錯了!
別忘了數(shù)組下標(biāo)是以0開始的文章來源:http://www.zghlxwxcb.cn/news/detail-757596.html
拜~~文章來源地址http://www.zghlxwxcb.cn/news/detail-757596.html
到了這里,關(guān)于C語言找鞍點(詳細(xì)講解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!