日记
2024.4.19
#include<stdio.h>
void dot(int arr[6][6],int *num,int *row,int *col){
int c=0;
int c_1=0;
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
for(int p=1;p<=5;p++){
if(arr[i][j]<=arr[p][j]) {
c++;
}
}
if(c==5)
for(int k=1;k<=5;k++){
if(arr[i][j]>=arr[i][k]) {
c_1++;
}
}
c=0;
if(c_1==5){
*row=i;
*col=j;
*num=arr[i][j];
}
c_1=0;
}
}
}
int main(){
int arr[6][6];
int num=0;
int row=0,col=0;
for(int i=0;i<6;i++){
for(int j=0;j<6;j++)
arr[i][j]=0;
}
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
scanf("%d",&arr[i][j]);
}
}
dot(arr,&num,&row,&col);
if(row==0) printf("not found");
else
printf("%d %d %d",row,col,num);
return 0;
}
自己探索算法的道路上总是艰辛的,但是却是最扎实的,上述算法注意事项:
1、计数器在发挥完一次作用后即使归零,以便下一次重新计数;
2、鞍点的找出需要先遍历一列或一行,再在该条件通过的前提下遍历一行或一列;
再介绍一类算法:
brr[i][j]=floor((arr[i][j]+arr[i-1][j]+arr[i+1][j]+arr[i][j-1]+arr[i][j+1])/5.0+0.5);
如果题目要求求最接近的数,此数要以double的形式加上0.5然后向下floor取整,即可得到最接近的数,即四舍五入