首页 > 试题广场 >

派分糖果

[编程题]派分糖果
  • 热度指数:2551 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

N个孩子站成一排,每个孩子有一个分值。给这些孩子派发糖果,需要满足如下需求:

1、每个孩子至少分到一个糖果

2、分值更高的孩子比他相邻位的孩子获得更多的糖果

求至少需要分发多少糖果?


输入描述:
0,1,0


输出描述:
4
示例1

输入

5,4,1,1

输出

7
JavaScript(Node) 😎题目:蘑菇街🍄-反派糖果 
const readline = require('readline')
const rl = readline.createInterface({
    input: process.stdin,
    ouput: process.stdout
})
let inArr = []
rl.on('line',line=>{
    if(!line) return
    inArr.push(line.trim())
    if(inArr.length === 1){
        let arr = inArr[0].split(',').map(e=>+e)
        let res = new Array(arr.length).fill(1)
        let len = arr.length
        let cnt = 0
        for(let i = 1 ; i < len ; i++){
            if(arr[i] > arr[i-1]){
                res[i] = res[i-1] + 1;
            }
        }
        for(let i = len -1 ; i > 0 ; i--){
            if(arr[i-1] > arr[i] && res[i-1] <= res[i]){
                res[i-1] = res[i] + 1;
            }
        }
        for(var i=0;i<len;i++){
             cnt += res[i];
        }
        // console.log(res)
        console.log(cnt)

    }
})


发表于 2020-02-26 23:27:34 回复(0)