C++欲張りアルゴリズム分キャンディ
8933 ワード
いくつかの子供といくつかのキャンディが知られており、各子供には需要因子gがあり、各キャンディには大きさsがあり、あるキャンディの大きさs>=ある子供の需要因子gである場合、そのキャンディが子供を満たすことができることを表す.これらのキャンディを使って、最大で何人の子供を満たすことができますか?(ある子供は1つのキャンディでしか満足できない)例えば、需要因子群g=[5,10,2,9,15,9];キャンディサイズ配列s=[6,1,20,3,8];最大3人の子供を満たすことができます.
実行結果:3
#include
#include
class Solution
{
public:
Solution(){}
~Solution(){}
int findContentChildren(std::vector<int>& g, std::vector<int>& s)
{
std::sort(g.begin(), g.end());
std::sort(s.begin(), s. end());
unsigned int child = 0;
unsigned int cookie = 0;
while (child<g.size() && cookie<s.size())
{
if (g[child] <= s[cookie])
{
child++;
}
cookie++;
}
return child;
}
};
int main()
{
Solution solve;
std::vector<int> g;
std::vector<int> s;
g.push_back(5);
g.push_back(10);
g.push_back(2);
g.push_back(9);
g.push_back(15);
g.push_back(9);
s.push_back(6);
s.push_back(1);
s.push_back(20);
s.push_back(3);
s.push_back(8);
printf("%d
",solve.findContentChildren(g,s));
return 0;
}
実行結果:3