用一维数组存储古董的重量:
# include <iostream>
# include <algorithm>
using namespace std;
const int N = 100005;
double w[N];
int main()
输入数据
double c;
int n; //载重量c和古董个数n
cout << "请输入可装载的重量c和古董个数n:" << endl;
cin >> c >> n;
cout << "请输入古董的重量:" << endl;
for (int i = 0; i < n; i++)
{
cin >> w[i];
}
按古董的重量进行从小到大排序
sort(w, w + n);
按照贪心策略找最优解
double tmp = 0;
int ans = 0;
for (int i = 0; i < n; i++)
{
tmp += w[i];
if (tmp <= c)
ans++;
else
break;
}
算法复杂度分析
时间复杂度:首先需要按照古董重量排序,调用sort函数,其平均时间复杂度为O(nlogn),
输入和贪心策略求解的两个for语句时间复杂度均为O(n),因此时间复杂度为O(n+nlog(n))。