找鞍點
分?jǐn)?shù) 14??????? 作者 C課程組????????單位 浙江大學(xué)
一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。
本題要求編寫程序,求一個給定的n階方陣的鞍點。
輸入格式:
輸入第一行給出一個正整數(shù)n(1≤n≤6)。隨后n行,每行給出n個整數(shù),其間以空格分隔。
輸出格式:
輸出在一行中按照“行下標(biāo) 列下標(biāo)”(下標(biāo)從0開始)的格式輸出鞍點的位置。如果鞍點不存在,則輸出“NONE”。題目保證給出的矩陣至多存在一個鞍點。
輸入樣例1:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
輸出樣例1:
2 1
輸入樣例2:
2
1 7
4 1
輸出樣例2:
NONE
第一想法是n3次方,后面用了數(shù)學(xué)知識,搞成O n2;
#include<stdio.h>
#include<string.h>
int main()
{
int n = 0;
scanf("%d",&n);
int s [n][n],max[n],min[n];
for(int i = 0; i< n ;i ++){
//按照行遍歷找最大
max[i] =0;
for(int j = 0; j< n ;j ++){
scanf("%d",&s[i][j]);
if(max[i] < s[i][j]){
max[i] = s[i][j];
}
}
// printf("max %d\n",max[i]);
}
for(int j = 0; j< n ;j ++){
//按照列遍歷找最小
min[j] =s[0][j];
for(int i = 1; i< n ;i ++){
if(min[j] > s[i][j]){
min[j] = s[i][j];
}
}
// printf("min %d\n",min[j]);
}
for(int i = 0; i< n ;i ++){
for(int j = 0; j< n ;j ++){
if(min[i] == max [j]){
printf("%d %d",j,i);
return 0;
}
}
}
printf("NONE");
}
在做完這道題目之后,我一直想找一個O(logn)的算法,但是感覺下面的算法都太麻煩了。
等一個大佬來評論區(qū)最簡單的算法
【PTA題目】7-16 找鞍點 分?jǐn)?shù) 20-CSDN博客文章來源:http://www.zghlxwxcb.cn/news/detail-752828.html
一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。本題要求編寫程序,求一個給定的n階方陣的鞍點。_一個矩陣元素的鞍點是指該位置上的_張張-張張的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-752828.html
到了這里,關(guān)于pta找鞍點 最簡單的方法(等新解法)一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。本題要求編寫程序,求一個給定的n階方陣的鞍點。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!