【題目敘述】http://judge.epass2u.com/problem/APCS1081026-1 (無法使用)
【解題想法】算術運算
- median( ):找出三個數字的中位數。
- 【方法1】排序後取中間那一個。
- 【方法2】三個數字的和,減去max,再減去min。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a[35];
//【方法1】排序後取中間那一個。
int median(int i){
int b[3] = {a[i-1], a[i-2], a[i-3]};
sort(b, b+3);
return b[1];
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
while (cin >> n){
for (int i=0; i<n; i++){
cin >> a[i];
}
for (int i=3; i<n; i++){
if (abs(a[i] - a[i-1]) < 5) continue;
a[i] = median(i);
}
for (int i=0; i<n; i++)
cout << a[i] << ' ';
cout << '\n';
}
return 0;
}
//【方法2】三個數字的和,減去max,再減去min。
int median(int i){
int ans = a[i-1] + a[i-2] + a[i-3];
ans -= max(a[i-1], max(a[i-2], a[i-3]));
ans -= min(a[i-1], min(a[i-2], a[i-3]));
return ans;
}
Python code (credit: Amy Chou)
def median(i):
b = [a[i-1], a[i-2], a[i-3]]
b.sort()
return b[1]
# main program
n = int(input())
a = list(map(int, input().split()))
for i in range(3, n):
if abs(a[i] - a[i-1]) < 5:
continue
else:
a[i] = median(i)
for i in range(n):
print(a[i], ' ', sep='', end='')
print()