C++之贪心思想题目及题解

题目来源于拼多多真题

多多鸡有N个魔术盒子(编号1~N),其中编号为i的盒子里有i个球。多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少X个。通过观察,皮皮虾已经掌握了其中的奥秘,并且发现只要通过一定的操作顺序,可以用最少的次数将所有盒子里的球变没。那么请问聪明的你,是否已经知道了应该如何操作呢?

贪心思想解题:每次都做最好的选择,最好的选择就是取中值。

#include
#include
using namespace std;
class Solution{
  public:
    vector<int> Magic_box(int n,vector<int> v)
    {
        vector<int> res;
        for(int i=0;i<n;i++)
        {
            int count=1;
            while(v[i]/2!=0)
            {
                v[i]=v[i]/2;
                count++;
            }
            res.push_back(count);
        }
        return res;
    }
};
  
  
int main()
{
    Solution s;
    int n,k;
    vector<int> v;
      
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>k;
        v.push_back(k);
    }
    auto res=s.Magic_box(n,v);
    for(int i=0;i<res.size();i++)
    {
       cout<<res[i]<<endl;
    }
    return 0;
}

你可能感兴趣的:(C++之贪心思想题目及题解)