算法设计.

文章目录

  • 1. 贪心算法:只看当前
    • 1.1 零钱兑换问题:力扣322
  • 2. 活动选择问题
  • 3. 动态规划
    • 3.1 不同路径:
    • 3.2 0-1背包问题
    • 3.3 完全背包问题
    • 3.4 零钱兑换-动态规划
  • 4. 最长公共字串--动态规划
  • 5. 最长公共子序列
  • 6. 最长递增子序列
  • 7. 打家劫舍
  • 8. 全排列--回溯

1. 贪心算法:只看当前

1.1 零钱兑换问题:力扣322

在这里插入图片描述

用贪心算法:但有可能得到错误的解
在这里插入图片描述

public class Leetcode322 {
    public int coinChange(int[] coins, int amount) {
        int remainder = amount;
        int count = 0;
        for (int coin : coins) {
            while (remainder - coin > 0) {
                remainder -= coin;
                count++;
            }
            if (remainder - coin == 0) {
                remainder = 0;
                count++;
                break;
            }
        }
        if (remainder > 0) {
            return -1;
        } else {
            return count;
        }
    }

    public static void main(String[] args) {
        Leetcode322 leetcode = new Leetcode322();
        int count = leetcode.coinChange(new int[]{5, 2, 1}, 5);
//        int count = leetcode.coinChange(new int[]{25, 10, 5, 1}, 41);
//        int count = leetcode.coinChange(new int[]{2}, 3);
        
        // 问题1 没有回头,导致找到更差的解
//        int count = leetcode.coinChange(new int[]{15, 10, 1}, 21);  
        // 问题2 没有回头,导致无解
//        int count = leetcode.coinChange(new int[]{15, 10}, 20);  
        System.out.println(count);
    }
}

2. 活动选择问题

在这里插入图片描述
贪心选择:每次选择最早结束的活动

3. 动态规划

在这里插入图片描述

3.1 不同路径:

在这里插入图片描述

3.2 0-1背包问题

在这里插入图片描述

3.3 完全背包问题

在这里插入图片描述

3.4 零钱兑换-动态规划

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


零钱兑换变种:在这里插入图片描述
在这里插入图片描述

4. 最长公共字串–动态规划

在这里插入图片描述

5. 最长公共子序列

在这里插入图片描述
在这里插入图片描述

6. 最长递增子序列

在这里插入图片描述
在这里插入图片描述

7. 打家劫舍

在这里插入图片描述

在这里插入图片描述

8. 全排列–回溯

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/445558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分销商城小程序怎么做_打造高效分销商城小程序的秘诀

在数字化浪潮席卷全球的今天,小程序成为了连接线上线下的重要桥梁。其中,分销商城小程序因其独特的裂变传播能力和低门槛的创业模式,受到了越来越多创业者和商家的青睐。那么,如何打造一个高效、吸引人的分销商城小程序呢&#xf…

数据库(一)初步认识数据库系统

什么是数据库? 表:以按行按列形式组织及展现的数据 如下便是一个表,也叫关系,描述了一批相互有关联关系的数据 数据库:起源于规范化表(如成绩单)的处理,简称DB,是相互有…

基于鳑鲏鱼优化算法(Bitterling Fish Optimization,BFO)的无人机三维路径规划

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径,使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一,它可以通过算法和模型来确定无人机的航迹,以避开障碍物、优化飞行…

童装WP模板

童装WP模板 https://www.wpniu.com/moban/6359.html

JDBC和连接池

JDBC和连接池 大纲 JDBC连接数据库的方式 具体案例 JDBC 需求:满足Java程序能对多个不同的数据库进行操作,而创建了一种接口,实现对数据库的规范 连接数据库的方式 1.方法1 先创建一个Driver对象,然后设置连接到的数据…

微信小程序提示确认框

如图所示,如何弹出微信小程序自带默认弹框? 代码如下: wx.showModal({ title: 确认, content: 确定要删除吗?, success (res) { if (res.confirm) { console.log(用户点击确定) } else if (res.cancel) { console.log(用…

物联网电气融合实训室建设方案

1 教学实训总体设计 1.1 建设背景 (一)政策推动与战略部署 近年来,物联网技术在全球范围内得到了广泛的关注和应用。作为信息技术的重要组成部分,物联网在推动经济转型升级、提升社会管理水平、改善民生福祉等方面发挥着重要作…

二、TensorFlow结构分析(5)案例

案例: minimize(error) 代码: def linear_regression():# 自实现线性回归# 1)准备数据X tf.random.normal(shape[100,1])y_true tf.matmul(X,[[0.8]]) 0.7# 2)构造模型# 定义模型参数 用 变量weights tf.Variable(initial_v…

Linux的基本权限

一、对shell的浅显认识 shell是操作系统下的一个外壳程序,无论是Linux操作系统,还是Windows操作系统,用户都不会直接对操作系统本身直接进行操作,需要通过一个外壳程序去间接的进行各种操作 在Linux的shell外壳就是命令行&#…

Storyboard动画、EventTrigger事件触发器

就是动画&#xff0c;要注意的就是EventTrigger中的SourceName就是想要实现这个功能的按钮 <StackPanel Orientation"Vertical"><Rectanglex:Name"rect"Width"200"Height"40"Fill"Pink" /><StackPanel Orie…

java之lombok

Lombok是一个实用的java类库&#xff0c;能通过注解的形式自动生成构造器&#xff0c; getter setter equsls hashcode tostring等方法 并且可以自动化生成日志变量&#xff0c;简化java开发&#xff0c;提高效率 作用 导入 <dependency><groupId>org.projectlomb…

Servlet API 详细讲解

Servlet API 详细讲解 API就是一组类和方法的集合&#xff0c;servlet 中的 类是非常多的&#xff0c;咱们只需要学习 3个类即可。 HttpServletHttpServletRequest&#xff08;服务器如何读取客户端响应&#xff09;HttpServletResponse&#xff08;服务器如何把响应返回给客…

C++ 中的头文件和源文件

#include<>一般用于包含系统头文件&#xff0c;诸如stdlib.h、stdio.h、iostream等&#xff1b; 类库目录下查找失败&#xff0c;编译器会终止查找&#xff0c;直接报错&#xff1a;No such file or directory. #include""一般用于包含自定义头文件&#xff…

Ubuntu18.04 下使用 Pybind11实现 C++ 调用 Python 函数和类的示例

Pybind11 是一个轻量级的库&#xff0c;它提供了在 C 中无缝集成 Python 代码的能力。使用 Pybind11&#xff0c;你可以很容易地从 C 调用 Python 代码&#xff0c;反之亦然。下面我将通过一个简单的例子来展示如何在 Ubuntu 系统上使用 Pybind11 从 C 调用 Python 接口。 安装…

css--浮动

一. 浮动的简介 在最初&#xff0c;浮动是用来实现文字环绕图片效果的&#xff0c;现在浮动是主流的页面布局方式之一。 二. 元素浮动后的特点 &#x1f922;脱离文档流。&#x1f60a;不管浮动前是什么元素&#xff0c;浮动后&#xff1a;默认宽与高都是被内容撑开&#xff0…

数据结构系列-链表实现

&#x1f308;个人主页: 会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” #define _CRT_SECURE_NO_WARNINGS #include"List.h" void ListTest01() {LTNode* plist LTInit();LTPushFront(plist, 1);LTPushFront(plist, 2);LTPushFront(plist, 3);…

VBA_NZ系列工具NZ02:VBA读取PDF使用说明

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…

Ubuntu 安装谷歌拼音输入法

一、Fcitx 安装 在Ubuntu 下&#xff0c;谷歌拼音输入法是基于Fcitx输入法的。所以&#xff0c;首先需要安装Fcitx。一般来说&#xff0c;Ubuntu最新版中都默认安装了Fcitx&#xff0c;但是为了确保一下&#xff0c;我们可以在系统终端中运行如下命令&#xff1a; sudo apt ins…

第15章——西瓜书规则学习

1.序贯覆盖 序贯覆盖是一种在规则学习中常用的策略&#xff0c;它通过逐步构建规则集来覆盖训练数据中的样本。该策略采用迭代的方式&#xff0c;每次从训练数据中选择一部分未被覆盖的样本&#xff0c;学习一条能够覆盖这些样本的规则&#xff0c;然后将这条规则加入到规则集中…

ArmSoM规划开发基于RK3576的开发套件

ArmSoM正计划推出一款新的产品&#xff0c;这款产品将采用强大的RK3576芯片。 本文将为您介绍我们的新产品搭载的RK3576性能参数&#xff0c;以及它如何为您提供卓越的性能和功能。 RK3576处理器 RK3576处理器是一款强大的处理器&#xff0c;具备出色的性能和多样化的功能&a…