一道不难但是烦并需要注意细节的题目…
代码的第28行, 最后才想起来加上…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
   | #include <iostream> #include <vector>
  using namespace std;
  struct E {     int sum;     vector<int> path; };
  int main() {
      int n, tracks_len, tracks[25];
      while (cin >> n) {         vector<E> s[25];         E ans;         ans.sum = 0;
          cin >> tracks_len;         for (int i = 0; i < tracks_len; ++i) {             cin >> tracks[i];             E e;             e.sum = tracks[i];             e.path.push_back(i);             s[i].push_back(e);
              if (e.sum <= n && e.sum > ans.sum) {                 ans = e;             }         }
          for (int i = 0; i < tracks_len; ++i) {             for (int j = 0; j < i; ++j) {                 for (auto k : s[j]) {                                                                                    k.sum += tracks[i];                     k.path.push_back(i);                     s[i].push_back(k);
                      if (k.sum <= n && k.sum > ans.sum) {                         ans = k;                     }                 }             }         }
          for (auto i : ans.path) {             cout << tracks[i] << " ";         }         cout << "sum:";         cout << ans.sum << endl;
 
 
      }     return 0; }
   |