class="cpp" name="code">#include <iostream> using namespace std; class child { public: child(){} int have; int need; }; int main() { int num, sum; while (true) { cin >> num >> sum; if (num == 0) { break; } child c[num]; for (int i = 0; i < num; ++ i) { cin >> c[i].have >> c[i].need; } for (int i = 0 ;i < num; ++ i) { int min = i; for (int j = i + 1; j < num; ++ j) { if (c[min].need > c[j].need) { min = j; } else if (c[min].need == c[j].need && c[min].have < c[j].have) { min = j; } } int temp = c[i].need; c[i].need = c[min].need; c[min].need = temp; int temp1 = c[i].have; c[i].have = c[min].have; c[min].have = temp1; } bool cherk = true; for (int i = 0; i < num; ++ i) { if (sum < c[i].need) { cherk = false; break; } else { sum += c[i].have; } } if (cherk) { cout << "YES" << endl; } else { cout << "NO" << endl; } } //system("pause"); }
??????? 这道题目其实很水的,但是我的算法不是很好,通过耗时比较长。
若有好的算法,欢迎私信我!谢谢。期待好的算法。