首页 > 编程语言 >代码随想录算法训练营第四十五天 | 279.完全平方数,322. 零钱兑换,70. 爬楼梯 (进阶)

代码随想录算法训练营第四十五天 | 279.完全平方数,322. 零钱兑换,70. 爬楼梯 (进阶)

时间:2024-03-13 19:12:37浏览次数:29  
标签:stones 四十五天 进阶 int coins 随想录 ++ amount dp

57. 爬楼梯(第八期模拟笔试) 时间限制:1.000S 空间限制:128MB

题目描述

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

输入描述
输入共一行,包含两个正整数,分别表示n, m
输出描述
输出一个整数,表示爬到楼顶的方法数。
输入示例
3 2
输出示例
3
提示信息

数据范围:
1 <= m < n <= 32;

当 m = 2,n = 3 时,n = 3 这表示一共有三个台阶,m = 2 代表你每次可以爬一个台阶或者两个台阶。

此时你有三种方法可以爬到楼顶。

 

  1. 1 阶 + 1 阶 + 1 阶段
  2. 1 阶 + 2 阶
  3. 2 阶 + 1 阶

package main

 

import "fmt"

 

func stair(sky, step int) int { //背包 sky, 石头 1,2,step, 完全背包问题, 排列组合 //dp[i] = 到i阶梯,不同方法 //递推公式 dp[j] = dp[j] + dp[j-step[i]] //初始化 dp[0] //输出 dp := make([]int, sky+1) dp[0] = 1 for j := 0; j < sky+1; j++ { for i := 0; i < step; i++ { if j-i-1 >= 0 { dp[j] = dp[j] + dp[j-i-1] } } } return dp[sky] }

 

func main() { var m, n int fmt.Scan(&m, &n) res := stair(m, n) fmt.Println(res) }

 


322. 零钱兑换

  已解答 中等  

相关标签

相关企业  

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。

 

示例 1:

输入:
[1, 2, 5]
11
输出:
3
解释:

示例 2:

输入:
[2]
3
输出:

示例 3:

输入:coins = [1], amount = 0
输出:0

 

提示:

  • 1 <= coins.length <= 12
  • 1 <= coins[i] <= 231 - 1
  • 0 <= amount <= 104

 


func coinChange(coins []int, amount int) int {
    //背包 总金额 amount  石头 钱币 coins 完全背包问题,组合问题  背包容量,amount   石头价格为 -1, 求dp[amount]的最大价格
    //dp[i] 该i容量背包的最大价格
    //递推公式  dp[j] = min(dp[j],dp[i-coins[j]]+1)
    //无限,从左向右遍历
    //输出    dp := make([]int, amount+1)
    for i := 0; i < len(dp); i++ {
        dp[i] = 100000
    }
    dp[0] = 0    for i := 0; i < len(coins); i++ {
        for j := 0; j < amount+1; j++ {
            if j-coins[i] >= 0 && dp[j] > dp[j-coins[i]]+1 {
                dp[j] = dp[j-coins[i]] + 1
            }
        }
    }
    if dp[amount] == 100000 {
        return -1
    }
    return dp[amount]
}

279. 完全平方数

  已解答 中等  

相关标签

相关企业  

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,149 和 16 都是完全平方数,而 3 和 11 不是。

 

示例 1:

输入:
12
输出:解释:
12 = 4 + 4 + 4

示例 2:

输入:
13
输出:解释:
13 = 4 + 9

提示:

  • 1 <= n <= 104

 


package main import "math" func numSquares(n int) int { //背包 整数n, 石头,1,2,4,9..., 石头价格 1 取背包整数 最小价格, 无限取,完成背包,价值,不是排序,石头先 //dp[i] = i个背包容量,最少数量 //递推 dp[i] = min(dp[i],dp[i-stone[j]]+1) //初始化 dp[0]=0, dp[1~n] = max //输出dp[n] var stones []int for i := 1; i <= 100; i++ { if i*i > n { break } stones = append(stones, i*i) } dp := make([]int, n+1) for i := 1; i < len(dp); i++ { dp[i] = math.MaxInt } for i := 0; i < len(stones); i++ { for j := 0; j < n+1; j++ { if j-stones[i] >= 0 && dp[j-stones[i]] != math.MaxInt && dp[j] > dp[j-stones[i]]+1 { dp[j] = dp[j-stones[i]] + 1 } } } return dp[n] }

标签:stones,四十五天,进阶,int,coins,随想录,++,amount,dp
From: https://www.cnblogs.com/suxinmian/p/18071329

相关文章

  • 数据结构进阶
    区间数颜色LOJ#3751.[SDOI2009]HH的项链给定长度为\(n\)的序列,\(m\)次询问\([l,r]\)内有多少不同的元素。\(n\le5\times10^4\),\(m\le2\times10^5\)。区间数颜色是莫队算法的经典应用,可以用莫队在\(\Theta(m\sqrtn)\)内解决。P1972[SDOI2009]HH的项链(数据加......
  • 代码随想录算法训练营第四十四天 | 377. 组合总和 Ⅳ ,518. 零钱兑换 II ,完全背包
    377.组合总和Ⅳ 已解答中等 相关标签相关企业 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合32位整数范围。 示例1:输入:num......
  • 代码随想录算法训练营第七天 | 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之
    day7记录代码随想录第一题力扣454.四数相加II 给定四个包含整数的数组列表 A,B,C,D,计算有多少个元组(i,j,k,l) ,使得 A[i]+B[j]+C[k]+D[l]=0。为了使问题简单化,所有的A,B,C,D具有相同的长度 N,且0≤N≤500。所有整数的范围在-2^28到......
  • 代码随想录算法训练营第四十五天| ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全
    爬楼梯 (进阶)题目链接:57.爬楼梯(第八期模拟笔试)(kamacoder.com)思路:笑嘻了,直接给默写出来了。#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,m;cin>>n>>m;vector<int>dp(n+1);dp[0]=1;for(inti=1;i<=n;i++){for(in......
  • Prompt进阶3:LangGPT(构建高性能质量Prompt策略和技巧2)--稳定高质量文案生成器
    Prompt进阶3:LangGPT(构建高性能质量Prompt策略和技巧2)--稳定高质量文案生成器1.LangGPT介绍现有Prompt创建方法有如下缺点:缺乏系统性:大多是细碎的规则,技巧,严重依赖个人经验缺乏灵活性:对他人分享的优质prompt进行调整需要直接修改prompt内容缺乏交互友好性:优质promp......
  • 嵌入式数据库SQlite3-进阶篇
    嵌入式数据库sqlite3-HQ文章目录嵌入式数据库sqlite3-HQ@[toc]嵌入式数据库sqlite3【进阶篇】数据库准备order子句Where子句与逻辑运算符语法实例groupby子句having子句举例函数SQLiteCOUNT函数SQLiteMAX函数SQLiteMIN函数SQLiteAVG函数SQLiteSUM函......
  • 技术笔记(8)git的部分进阶功能
    技术笔记(8)git的部分进阶功能‍学习笔记:‍与分支有关的git操作branch、checkout、merge查看分支:查看当前分支信息:gitbranch查看远程分支信息:gitbranch-r查看所有分支信息,包括本地和远程:gitbranch-a分支与分支:切换到某分支:gitcheckout从当前节点新建......
  • 东华OJ 进阶题30 盾神与砝码称重
    问题描述:有一天,他在宿舍里无意中发现了一个天平!这个天平很奇怪,有n个完好的砝码,但是没有游码。盾神为他的发现兴奋不已!于是他准备去称一称自己的东西。他准备好了m种物品去称。神奇的是,盾神一早就知道这m种物品的重量,他现在是想看看这个天平能不能称出这些物品出来。但是......
  • 代码随想录算法训练营day21 | leetcode 530. 二叉搜索树的最小绝对差、501. 二叉搜索
    目录题目链接:530.二叉搜索树的最小绝对差-简单题目链接:501.二叉搜索树中的众数-简单题目链接:236.二叉树的最近公共祖先-中等题目链接:530.二叉搜索树的最小绝对差-简单题目描述:给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,......
  • Day7代码随想录(1刷) 哈希表
    目录454.四数相加II 383.赎金信15.三数之和 18.四数之和 454.四数相加II给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i,j,k,l) 能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+nums4[l......