原题目链接:
P2234 [HNOI2002] 营业额统计 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
原题目截图:
思路分析:
-
输入:程序首先从标准输入读取一个整数
n
,表示接下来要输入的数字的数量。 -
初始化:接着,程序创建一个大小为
n+1
的整数向量cost
,并初始化所有元素为0。这里使用n+1
是因为向量索引从0开始,而题目中的数据似乎是从1开始的。 -
读取成本:然后,程序读取
n
个整数到cost
向量中,这些整数代表每个数字的成本。 -
计算总成本:程序初始化一个变量
sum
,用来存储总成本,初始值为cost[1]
。 -
遍历计算:程序使用一个循环,从
i = 2
到n
,对每个数字进行处理。对于每个i
,程序再使用一个内部循环,从j = 1
到i-1
,计算cost[i]
与之前所有成本的绝对差值,并找到这些差值中的最小值,存储在变量temp
中。 -
更新总成本:每次找到最小差值后,程序将这个最小差值加到
sum
上。 -
输出结果:最后,程序输出计算出的总成本
sum
。
解决代码:
#include<iostream>
#include<cstdlib>
using namespace std;
#include<vector>
#include<climits>
int main() {
int n;
cin >> n;
vector<int>cost(n + 1,0);
for (int i = 1; i <= n; i++) {
cin >> cost[i];
}
int sum = cost[1];
for (int i = 2; i <= n; i++) {
int temp=INT_MAX;
for (int j = 1; j < i; j++) {
temp = temp < abs(cost[i] - cost[j]) ? temp : abs(cost[i] - cost[j]);
}
sum += temp;
}
cout << sum;
return 0;
}