当前位置:   article > 正文

贪心算法--糖果分配 C语言实现_c语言贪心算法分糖果

c语言贪心算法分糖果

一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下:

1. 每个孩子不管得分多少,起码分到一个糖果。

2. 任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制)

给定一个数组 arr 代表得分数组,请返回最少需要多少糖果。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int allocation(int *arr, int n){
  4. int *alloc = (int *)malloc(sizeof(int) * n);
  5. alloc[0] = 1;
  6. for (int i = 1; i < n; ++i) {
  7. if(arr[i] > arr[i-1]){
  8. alloc[i] = alloc[i-1] + 1;
  9. }else{
  10. alloc[i] = 1;
  11. }
  12. }
  13. for (int i = n-1; i >= 0; --i) {
  14. if(arr[i] < arr[i-1] && alloc[i] >= alloc[i-1]){
  15. alloc[i-1] = alloc[i] + 1;
  16. }
  17. }
  18. int sum = 0;
  19. for (int i = 0; i < n; ++i) {
  20. sum += alloc[i];
  21. }
  22. return sum;
  23. }
  24. int main(){
  25. int arr[8] = {4,1,6,4,10,9,5,1};
  26. int sum = allocation(arr, 8);
  27. printf("sum = %d\n",sum);
  28. return 0;
  29. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/1021670
推荐阅读
相关标签
  

闽ICP备14008679号