08-2. 求矩陣的局部極大值(15)

</pre><pre name="code" class="plain">#include <stdio.h>
#include <stdlib.h> 
int main(void)
{
	int num[20][20] = {0};
	int row, column;
	int i, j;
	scanf("%d %d", &row, &column);
	
//	int **num;  
//	num = (int **) malloc(row * sizeof(int *));  
//    for(i = 0; i < row; i++) 
//		num[i]=(int *) malloc(column * sizeof(int));  
	
	
	for(i = 0; i < row; i++)
		for(j = 0; j < column; j++)
			scanf("%d", &num[i][j]);
//	{	
//		for(i = 0; i < 20; i++)
//		{
//			for(j = 0; j < 20; j++)
//				printf("%-2d", num[i][j]);
//			printf("\n");
//		}
//	}		
		
	// 不取第1行、第row行
	// 不取第1列、第column列
	int r = 1;
	for(i = 1; i < row - 1; i++)
		for(j = 1; j < column - 1; j++)
		{
			if( num[i][j] > num[i-1][j] &&	// 上 
				num[i][j] > num[i+1][j] &&	// 下 
				num[i][j] > num[i][j-1] &&	// 左 
				num[i][j] > num[i][j+1]	)	// 右 
			   {
//					printf("%d 第%d行,第%d列\n", num[i][j], i + 1, j + 1);
					printf("%d %d %d\n", num[i][j], i + 1, j + 1);
					r = 0;
			   }
		}
		if(r == 1)
			printf("None %d %d", row, column);
	
	return 0;
}
/*
	測試點3錯誤。
		
	自我判斷:應該是判斷的條件不完全正確 
		
	進過無數次的比較發現: 
	
	這個順序是正確的
		num[i][j] > num[i-1][j] &&	// 上 
		num[i][j] > num[i+1][j] &&	// 下 
		num[i][j] > num[i][j-1] &&	// 左 
		num[i][j] > num[i][j+1]		// 右 
		
	而我原來if的條件:
		num[i][j] > num[i][j - 1] && // 左 
		num[i][j] > num[i][j + 1] && // 右 
		num[i][j] > num[i + 1][j] && // 下 
		num[i][j] > num[i - 1][j] 	 // 上 
		
	打印出400個數就可以看出,必須先滿足左、上的判斷就可以,
	不然會被短路 
*/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章