程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> PAT 08-2 求矩陣的局部最大值,pat08-2

PAT 08-2 求矩陣的局部最大值,pat08-2

編輯:關於C語言

PAT 08-2 求矩陣的局部最大值,pat08-2


這題挺簡單的,但,每日一篇。說兩點:第一,我的粗心導致我這題花了大把的時間去找錯誤,看到4個測試用例對了三個,我以為是那塊的邊界條件沒考慮到,又或者是存在隱蔽的邏輯或語法錯誤,通過與別人程序的反復對比才發現是我的四個大於條件中的兩個寫一樣了,也就少了一個,悲劇;第二,flag用的有點別扭,用個cnt++其實就行,但邏輯上要表達的就是是否的關系,我還是用了bool,題設要求及代碼實現如下

 1 /*
 2     Name: 
 3     Copyright: 
 4     Author: 
 5     Date: 02/04/15 11:05
 6     Description: 
 7 給定M行N列的整數矩陣A,如果A的非邊界元素A[i][j]大於相鄰的上下左右4個元素,那麼就稱元素A[i][j]是矩陣的局部極大值。本題要求給定矩陣的全部局部極大值及其所在的位置。
 8 
 9 輸入格式:
10 
11 輸入在第1行中給出矩陣A的行數M和列數N(3<=M,N<=20);最後M行,每行給出A在該行的N個元素的值。數字間以空格分隔。
12 
13 輸出格式:
14 
15 每行按照“元素值 行號 列號”的格式輸出一個局部極大值,其中行、列編號從1開始。要求按照行號遞增輸出;若同行有超過1個局部極大值,則該行按列號遞增輸出。若沒有局部極大值,則輸出“None 總行數 總列數”。
16 
17 輸入樣例1:
18 4 5
19 1 1 1 1 1
20 1 3 9 3 1
21 1 5 3 5 1
22 1 1 1 1 1
23 輸出樣例1:
24 9 2 3
25 5 3 2
26 5 3 4
27 輸入樣例2:
28 3 5
29 1 1 1 1 1
30 9 3 9 9 1
31 1 5 3 5 1
32 輸出樣例2:
33 None 3 5
34 */
35 
36 #include <stdio.h>
37 #include <stdbool.h>
38 
39 void maxium(int M, int N);
40 
41 int main()
42 {
43 //    freopen("in.txt", "r", stdin); // for test
44     
45     int M, N;
46     
47     scanf("%d%d", &M, &N);
48     
49     maxium(M, N);
50     
51 //    fclose(stdin); // for test
52     
53     return 0;
54 }
55 
56 void maxium(int M, int N)
57 {
58     int i, j, a[M][N];
59     
60     for(i = 0; i < M; i++)
61         for(j = 0; j < N; j++)
62             scanf("%d", &a[i][j]);
63         
64     bool flag;
65     
66     flag = true;
67     for(i = 1; i < M - 1; i++)
68     {
69         for(j = 1; j < N - 1; j++)
70         {
71             if(a[i][j] > a[i - 1][j] && a[i][j] > a[i][j + 1] && a[i][j] > a[i + 1][j] && a[i][j] > a[i][j - 1])
72             {
73                 printf("%d %d %d\n", a[i][j], i + 1, j + 1);
74                 if(flag)
75                     flag = false;
76             }
77         }
78     }
79     if(flag)
80         printf("None %d %d\n", M ,N);
81 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved