动态规划,二叉树练习题

动态规划

416. 分割等和子集

力扣题目链接(opens new window)

题目难易:中等

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200

示例 1:

  • 输入: [1, 5, 11, 5]
  • 输出: true
  • 解释: 数组可以分割成 [1, 5, 5] 和 [11].

示例 2:

  • 输入: [1, 2, 3, 5]
  • 输出: false
  • 解释: 数组不能分割成两个元素和相等的子集.

提示:

  • 1 <= nums.length <= 200
  • 1 <= nums[i] <= 100

这题是一个背包问题,只需要求出数组的和,将和除以2,就是背包容量,背包容量为和除以2装的元素和是否等于和除以2,这样就完成了这个题。那我们来实现一下代码。 

#include <bits/stdc++.h>
using namespace std;
int sum;
int num[210];
int dp[10010];
int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>num[i];sum+=num[i];//对数组求和}sum/=2;for(int i=0;i<n;i++){for(int j=sum;j>=num[i];j--)dp[j]=max(dp[j],dp[j-num[i]]+num[i]);//求背包容量为j,是求得子集的最大值}if(dp[sum]==sum)//如果和sum相同则输出YEScout<<"YES";elsecout<<"NO";return 0;
}

 

1049.最后一块石头的重量II

力扣题目链接(opens new window)

题目难度:中等

有一堆石头,每块石头的重量都是正整数。

每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:

如果 x == y,那么两块石头都会被完全粉碎;

如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。

最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。

示例:

  • 输入:[2,7,4,1,8,1]
  • 输出:1

解释:

  • 组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],
  • 组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],
  • 组合 2 和 1,得到 1,所以数组转化为 [1,1,1],
  • 组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。

提示:

  • 1 <= stones.length <= 30
  • 1 <= stones[i] <= 1000

 这道题和前面的分割等和子集相同,对数组求和,再将和除以2,对和除以2这个容量进行背包,看这个容量最大能够装多少石头,再用原来的减去这个就完成了。

#include <bits/stdc++.h>
using namespace std;
int sum;
int num[210];
int dp[10010];
int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>num[i];sum+=num[i];}int coun=sum;sum/=2;for(int i=0;i<n;i++){for(int j=sum;j>=num[i];j--)dp[j]=max(dp[j],dp[j-num[i]]+num[i]);}cout<<coun-dp[sum]-dp[sum];//两个子集碰撞消除return 0;
}

 二叉树

P1305 新二叉树

题目描述

输入一串二叉树,输出其前序遍历。

输入格式

第一行为二叉树的节点数 n。(1≤n≤26)

后面 n 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。

空节点用 * 表示

输出格式

二叉树的前序遍历。

输入输出样例

输入 #1复制

6
abc
bdi
cj*
d**
i**
j**

输出 #1复制

abdicj
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct note
{char left;char right;char fa;
}tree[150];
void xian(char s)
{cout<<s;if(tree[s].left!='*')xian(tree[s].left);if(tree[s].right!='*')xian(tree[s].right);
}
int main()
{int n;cin>>n;char root;for(int i=1;i<=n;i++){char s;cin>>s;if(i==1)root=s;cin>>tree[s].left>>tree[s].right;tree[tree[s].left].fa=tree[tree[s].right].fa=s;}xian(root);return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA】Tomcat的安装

目录 官网链接 下载安装程序 解压 启动Tomcat 问题 其他文件介绍 官网链接 Apache Tomcat - Welcome!https://tomcat.apache.org/ 下载安装程序 进入官网后&#xff0c;点击如下tomcat 8: 进入tomcat 8后选择zip文件下载 解压 Tomcat是一个基于java实现的“绿色软件…

uni-app中本地存储和缓存

可以使用同步的方法uni.setStorageSync、uni.getStorageSync、uni.removeStorageSync和uni.clearStorageSync等方法来操作本地存储和缓存。 设置本地存储 uni.setStorageSync(key, value); 获取本地存储 let value uni.getStorageSync(key); 删除本地存储 uni.removeSto…

JavaGuide-SQL在mysql中的执行过程

SQL在mysql中的执行过程 原文连接 SQL在mysql中的执行过程 基础架构概览 我们先总结基本组件 连接器: 身份认证 权限相关的,我们连接的时候会验证查询缓存: 8.0之后移除,执行查询的时候,会先查缓存分析器: 分析你的sql语句,包括词法分析 语法分析优化器: 按照mysql认为最…

社区发现之标签传播算法(LPA)

在Graph领域,社区发现(Community detection)是一个非常热门且广泛的话题,后面会写一个系列,该问题实际上是从子图分割的问题演变而来,在真实的社交网络中,有些用户之间连接非常紧密,有些用户之间的连接较为稀疏,连接紧密的用户群体可以看做一个社区,在风控问题中,可…

Go语言调用身份证实名认证API方法-标准版身份证实名认证接口

翔云身份证实名认证接口具备高准确度的身份信息比对能力&#xff0c;包括姓名、身份证号码、人脸照片等信息的一致性验证&#xff0c;并能实时反馈验证结果。 以下是GO语言调用翔云身份实名认证API的代码&#xff1a; package mainimport ("fmt""bytes"&q…

vue 动态渲染本地图片不显示的解决方法

代码更改前 <img class"img" :src"/assets/images/${syntheticalGrade}.png" />data(){return{syntheticalGrade:"1"} }效果图&#xff1a; 解决代码 <img class"img" :src"require(/assets/images/${syntheticalGrad…

Java模板方法模式:定义骨架,允许子类定制行为

Java模板方法模式&#xff1a;定义骨架&#xff0c;允许子类定制行为 摘要&#xff1a;模板方法模式是一种行为设计模式&#xff0c;它在一个方法中定义了一个算法的骨架&#xff0c;允许子类在不改变算法结构的情况下重定义某些步骤的具体内容。本文将详细介绍Java中实现模板…

光纤跳线的大方头跳线、小方头跳线、圆头跳线

光纤跳线在数据中心的应用非常广泛&#xff0c;它普遍应用在光纤通信系统 、光纤接入网、光纤设备传输以及局域网等领域。在光纤通信快速 发展和各种设备需求扩大的推动下&#xff0c;更多类型的光纤跳线被研发出 以及被使用。大家可能听说过LC、SC、FC、ST等跳线&#xff0c;那…

uniapp:APP端webview拦截H5页面跳转,华为市场发布需要限制webview的H5页面跳转

在使用uniapp开发APP项目时&#xff0c;华为市场上线APP会被打回来&#xff1a;您的应用内容存在点击跳转至第三方应用市场或游戏中心下载渠道的问题&#xff0c;不符合华为应用市场审核标准。 华为审核指南4.6 因此可以考虑下面的处理方式&#xff0c;通过拦截webview页面的…

寒假学习总结

经过一个寒假的学习 学了许多的关于数据结构知识 栈与队列&#xff0c;优先队列&#xff0c;单调栈&#xff0c;单调队列&#xff0c;双端队列https://blog.csdn.net/2301_81794044/article/details/135871598?spm1001.2014.3001.5501深搜和广搜https://blog.csdn.net/2301_…

Linux命令 - 如何查询当前已使用的内存占比

结果先行 free -h | awk NR2{printf "%.2f%%", $3*100/$2 }解释一下 这个命令组合了 free -h 和 awk 命令来输出已用内存的百分比。我们一步一步来解析这个命令&#xff1a; Step 1 free -hfree 是一个用来显示 Linux 系统内存使用情况的命令。-h 参数是 “human…

成功解决TypeError: can‘t multiply sequence by non-int of type ‘float‘

&#x1f525; 成功解决TypeError: can’t multiply sequence by non-int of type ‘float’ &#x1f4c5; 日期&#xff1a;2024年2月23日 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化…

Intel处理器虚拟化技术VT-x86下实现小型虚拟化框架(1)

一.前言 我一直觉得&#xff0c;学习计算机中的一门新技术&#xff0c;一定要从历史去了解他的全貌。这样有利于我们了解事情的来龙去脉和发展的过程。一上来直接接触新兴事物&#xff0c;很容易陷入不知从何下手的困境。不了解历史发展&#xff0c;就不明白前人的一些操作。因…

FAISS+bge-large-zh在大语言模型LangChain本地知识库中的作用、原理与实践

文章目录 FAISSbge-large-zh在大语言模型LangChain本地知识库中的作用、原理与实践引言FAISS与bge-large-zh简介FAISS原理bge-large-zh原理 FAISSbge-large-zh在LangChain本地知识库中的作用提高检索效率增强语义理解能力支持大规模数据处理 实践数据准备与处理FAISS索引构建与…

Xcode中App图标和APP名称的修改

修改图标 选择Assets文件 ——> 点击Applcon 换App图标 修改名称 点击项目名 ——> General ——> Display Name

Servlet(2)

文章目录 更方便的部署方式安装 Smart Tomcat 插件配置 Smart Tomcat 插件 访问出错怎么办出现 404出现 405出现 500出现 "空白页面"出现 "无法访问此网站" 小结 更方便的部署方式 手动拷贝 war 包到 Tomcat 的过程比较麻烦. 我们还有更方便的办法. 此处我…

用CSS制作弧形卡片的三种创意方法!

在平时开发中&#xff0c;有时候会碰到下面这种“弧形”样式&#xff0c;主要分为“内凹”和“外凸”两种类型&#xff0c;如下 该如何实现呢&#xff1f;或者想一下&#xff0c;有哪些 CSS 属性和“弧形”有关&#xff1f;下面介绍 3 种方式&#xff0c;一起看看吧 一、borde…

智慧校园的未来已来!AI与数字孪生领航教育新时代

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;和数字孪生技术正逐渐渗透到我们生活的方方面面&#xff0c;而在教育领域&#xff0c;它们的结合更是催生出一种全新的智慧校园模式。这种模式的出现&#xff0c;不仅预示着教育管理方式的彻底变革&#xff0…

网络原理 - HTTP/HTTPS(5)

HTTPS HTTPS也是一个应用层协议.在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的. 这就导致了在传输过程中出现了一些被篡改的情况. 臭名昭著的"运营商劫持" 下载一个天天动听. 未被劫持的效果,点击下载按钮,就会弹出天天动听的…

【linux】常见指令 -通配符,数据管道,重定向,压缩打包...

目录 前言 基本指令 ls命令 常见选项 ​编辑 pwd命令 cd 指令 常见选项 touch指令 mkdir指令 常见选项 rm 指令 常见选项 man指令 cp指令 常用选项&#xff1a; mv指令 常用选项 nano指令 如何写入且执行文件&#xff1f; cat指令 常用选项 more指令…