Candy
来源:互联网 发布:ai人工智能是什么意思 编辑:程序博客网 时间:2024/06/11 03:57
Description:
There are N children standing in a line. Each child is assigned a rating value.
You are giving candies to these children subjected to the following requirements:
Each child must have at least one candy.
Children with a higher rating get more candies than their neighbors.
What is the minimum candies you must give?
#include <iostream>#include <vector>#include <algorithm>using namespace std;class Solution{public: int candy(vector<int> &ratings) { const int n = ratings.size(); vector<int> candy(n); for (int i=1,inc = 1; i < n; ++i) //从左到右 { if (ratings[i-1] < ratings[i]) candy[i] = max(inc++,candy[i]); else inc = 1; } for (int i = n-2,inc = 1; i >=0; --i) //从右到左 { if (ratings[i] > ratings[i+1]) candy[i] = max(inc++,candy[i]); else inc = 1; } return accumulate(&candy[0],&candy[0]+n,n);//每个孩子至少一个 }};int main(){ vector<int> ratings1 = {1,3,5,7,9}; vector<int> ratings2 ={5,4,3,2,1}; vector<int> ratings3 = {1,3,5,2,1}; int sum1=0,sum2=0,sum3=0; Solution solution; sum1 = solution.candy(ratings1); sum2 = solution.candy(ratings2); sum3 = solution.candy(ratings3); cout<<"ratings1: "<<sum1<<endl; cout<<"ratings2: "<<sum2<<endl; cout<<"ratings3: "<<sum3<<endl; return 0;}
参考文章:
http://blog.csdn.net/ljiabin/article/details/39061181
http://www.cnblogs.com/felixfang/p/3620086.html
0 0
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- Candy
- candy
- Candy
- Candy
- Candy
- Candy
- LeetCode : Sudoku Solver [java]
- CodeForces - 501B
- 关于蓝桥OJ算法训练之最小乘积(基本型)
- 经典迷宫问题DFS 深度优先
- c语言学习中的杂记
- Candy
- 1025. PAT Ranking (25)
- linux进程间通信——共享内存
- JVM内幕:Java虚拟机详解
- 星座图映射
- 在Fragment中OnActivityResult方法中接收Activity中返回的值
- Activity抛出异常has leaked window com.android.internal.policy.impl.PhoneWindow处理办法以及注意事项
- JDBC-mqsql基本操作`
- hdu3746 Cyclic Nacklace(kmp找循环节)