牛客JS(V8)输入输出写法

常用输入

readline()读取一整行内容,并且为字符串类型
parseInt()转数字,但是如parseInt("1 2 3 4")输出1,仅输出第一个

例子

单行数字输入直接let xx = parseInt(readline()),输出console.log()
多行数字输入一般使用如下封装函数,while(1)循环读取,遇到结束符跳出,将读到的值作为参数传入函数。readline()一行一行地读取,如果一行多个数字(如1 2 3空格隔开):let arr =readline().split(" ").map(Number)此时arr为[1,2,3]数字数组

while(1){
	if(...)break; 
	let xx = readline()...; 
	console.log(fun(xx))
};
function fun(xx){...}

斐波那契数列

在这里插入图片描述

let N = parseInt(readline())
function feibonaqie(N) {
    if(N===1||N===0){
        return 1
    }else{
        let dp = []
        dp[0]=1; dp[1]=1;
        for(let i=2; i<N+1; i++){
            dp[i] = dp[i-1]+dp[i-2]
        }
        return dp[N]
    }
}
console.log(feibonaqie(N))

代金券组合

在这里插入图片描述

while(1){
    // readline()出来是字符串
    let total = parseInt(readline())    //读第一行 65
    if(total==0){
        break
    }else{
        // 读第二行,parseInt("1 2 3")只能识别第一个1
        let lineArr = readline().split(" ").map(Number)    // 转数字数组
        let num = lineArr[0];
        let arr = lineArr.slice(1)	// 取出第一个以后地所有数字
        // console.log(total,num,arr) 
        console.log(minCount(total,num,arr));
    }
}
// total是商品的价格,num是有多少种代金券,arr代金券面额number数组
function minCount(total,num,arr) {
    let dp = Array(total+1).fill(1001);    // dp数组索引表示价格,值表示最少优惠券数量
    dp[0] = 0
    for(let i=1; i<total+1; i++){    // 从头开始遍历每一个价格
        for(let j=0; j<arr.length; j++){    // 遍历每一张代金券
            if(i-arr[j]>=0){
                dp[i] = Math.min(dp[i],dp[i-arr[j]]+1)
            }
        }
    }
    if(dp[total] === 1001){
        return "Impossible"
    }else return dp[total]
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值