试题编号: | 201809-1 |
试题名称: | 卖菜 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。 输入格式 输入的第一行包含一个整数n,表示商店的数量。 输出格式 输出一行,包含n个正整数,依次表示每个商店第二天的菜价。 样例输入 8 样例输出 2 2 1 3 4 9 10 13 数据规模和约定 对于所有评测用例,2 ≤ n ≤ 1000,第一天每个商店的菜价为不超过10000的正整数。 |
解题思路:
建立俩个数组,分别是第一天的菜价和第二天的菜价。第一天的菜价由输入得到。第二天的菜价就按照题意来:①编号为1的商店只有一个相邻的商店2;②编号为n的商店只有一个相邻的商店n-1;③其余的编号为i的商店有两个相邻的商店i-1和i+1。最后来个for-each循环输出第二天菜价即可。
100分代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n]; //第一天的菜价
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
//去尾法取整
int b[n]; //第二天的菜价
b[0] = (a[0]+a[1])/2; //编号为1的商店只有一个相邻的商店2
for (int i = 1; i < n-1; i++) //中间编号为i的商店有两个相邻的商店i-1和i+1
{
b[i] = (a[i-1]+a[i]+a[i+1])/3;
}
b[n-1] = (a[n-1]+a[n-2])/2; //编号为n的商店只有一个相邻的商店n-1
for(auto i:b) //for-each循环遍历数组b并进行输出
{
cout << i << " ";
}
return 0;
}