`
linxiaoty
  • 浏览: 12079 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

sicily1134. 积木分发

阅读更多
#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");
}                                 

        这道题目其实很水的,但是我的算法不是很好,通过耗时比较长。

若有好的算法,欢迎私信我!谢谢。期待好的算法。

0
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics