2017年5月22日 星期一

ITSA 51 - [Problem 3] 中值濾波器 - 參考答案

Difficulty: Easy
Ref: ITSA 51 - [Problem 3] 中值濾波器
/*******************************************************/
/* [Problem 3] 中值濾波器                               */
/* Author: awei0905  [at]  awei0905.blogspot.tw        */
/* Version: 2017/05/22                                 */
/*******************************************************/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
 int n;
 scanf("%d", &n);
 while (n--) {
  int m, seq[3];
  scanf("%d %d %d", &m, seq, &seq[1]);
  printf("%d ", seq[0]);
  m -= 2;
  while (m--) {
   scanf("%d", &seq[2]);
   if (seq[2] <= seq[0]) {
    if (seq[0] <= seq[1])
     seq[1] = seq[0];
    else if (seq[1] <= seq[2])
     seq[1] = seq[2];
   }
   else {
    if (seq[1] < seq[0])
     seq[1] = seq[0];
    else if (seq[2] < seq[1])
     seq[1] = seq[2];
   }
   printf("%d ", seq[0] = seq[1]);
   seq[1] = seq[2];
  }
  printf("%d\n", seq[2]);
 }
 return 0;
}
Debug: I/O
不斷比大小,答案就出來了。
2
9
3 3 5 3 3 9 4 4 4
10
4 15 3 4 4 1 3 4 4 8
3 3 3 3 3 4 4 4 4
4 4 4 4 4 3 3 4 4 8

沒有留言:

張貼留言