【思路】:利用vector的动态特性和相关操作很容易实现。可以算第一次真正用STL做题,算开始了我的STL之旅吧。
【AC代码】:
#include <iostream> #include <algorithm> #include <cstdio> #include <vector> using namespace std; #define MAX 100+10 bool Comp(const int &a,const int &b) { return a < b ; } int main() { //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); vector <int> Huff; vector <int>::iterator Iter; int i = 0, x = 0, n = 0, tolconsu = 0; //input cin >> n; for (i = 0; i < n; i++) { cin >> x; Huff.push_back(x); } while (Huff.size() >= 2) { sort(Huff.begin(), Huff.end(), Comp); int sum = Huff[0]+Huff[1]; //cout << Huff.front() << endl; Iter = Huff.begin(); Huff.erase(Iter); //cout << Huff.front() << endl; Iter = Huff.begin(); Huff.erase(Iter); Huff.push_back(sum); tolconsu += sum; } cout << tolconsu; }
注意:1. Comp函数的写法,小于是升序,大于是降序。
2. push_back() 用来动态添加。
3. erase() 的参数是iterator。
时间: 2024-11-05 12:13:08