日记

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取整,即可得到最接近的数,即四舍五入
posted @ 2024-04-19 21:21  pengfu_xin  阅读(3)  评论(0编辑  收藏  举报