贪心取最大和

贪婪算法:
1、不追求最优解,故不穷举所有可能性,故效率高;
2、在某些情况,会成为最优解,如找钱时要求纸币数量最少。

求最小生成树的Prim算法和Kruskal算法都是漂亮的贪心算法。
马踏棋盘、背包装重的场景

#include <iostream>
#include <string>
using namespace std;


int greedy(int tag, int *p, int size);

int main(int argc, char *argv[])
{
  int weight[10] = {90,80,70,60,50,40,30,20,10,5};

  cout << greedy(225, weight, 10) << endl;

  return 0;
}

int greedy(int tag, int *p, int size)
{
//  假设数组P由降序排列
  int count = 0;
  for (int i = 0; i < size; i++)
  {
    if (tag >= p[i])
    {
      cout << i << ":" << p[i] << endl;
      count += p[i];
      tag -= p[i];
    }
  }
  return count;
}

你可能感兴趣的:(算法)