1. 程式人生 > >201809-1 賣菜(100分)

201809-1 賣菜(100分)

問題描述
  在一條街上有n個賣菜的商店,按1至n的順序排成一排,這些商店都賣一種蔬菜。
  第一天,每個商店都自己定了一個價格。店主們希望自己的菜價和其他商店的一致,第二天,每一家商店都會根據他自己和相鄰商店的價格調整自己的價格。具體的,每家商店都會將第二天的菜價設定為自己和相鄰商店第一天菜價的平均值(用去尾法取整)。
  注意,編號為1的商店只有一個相鄰的商店2,編號為n的商店只有一個相鄰的商店n-1,其他編號為i的商店有兩個相鄰的商店i-1和i+1。
  給定第一天各個商店的菜價,請計算第二天每個商店的菜價。
輸入格式
  輸入的第一行包含一個整數n,表示商店的數量。
  第二行包含n個整數,依次表示每個商店第一天的菜價。
輸出格式
  輸出一行,包含n個正整數,依次表示每個商店第二天的菜價。
樣例輸入
8
4 1 3 1 6 5 17 9
樣例輸出
2 2 1 3 4 9 10 13
資料規模和約定
  對於所有評測用例,2 ≤ n ≤ 1000,第一天每個商店的菜價為不超過10000的正整數。
  水題不解釋,提交後得100分的C++程式如下:

#include<iostream>
#include<algorithm>
using namespace std;
int a[1005], b[1005];
int main()
{
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	for (int i = 1; i <= n; i++)
	{
		if (i == 1)
		{
			b[i] = (a[1] + a[2]) / 2;
		}
		else if (i == n)
		{
			b[i] = (a[i - 1] + a[i]) / 2;
		}
		else
		{
			b[i] = (a[i - 1] + a[i] + a[i + 1]) / 3;
		}
	}
	for (int i = 1; i <= n; i++)
	{
		cout << b[i] << " ";
	}
    return 0;
}