头歌资源库(24)插入加号

一、 问题描述

二、算法思想  

       可以使用动态规划来解决这个问题。

       首先将数字串拆分为多个数字,用一个数组nums来存储每个数字。例如,数字串79846会被拆分为数组[7, 9, 8, 4, 6]。

       然后定义一个二维数组dp,其中dp[i][j]表示在前i个数字中插入j个加号所能得到的最小值。初始化dp数组为无穷大,除了dp[0][0] = 0。

       然后使用两个循环来更新dp数组。外层循环遍历数字串的每个数字,内层循环遍历插入的加号个数。对于每个dp[i][j],可以考虑将数字nums[i]与前面的数字组合成一个新的数,或者将数字nums[i]与前面的数字之间插入加号。取两种情况中的较小值作为dp[i][j]的值。

       最后,dp数组的最后一行中的最小值即为所求的最小值。

三、代码实现  

#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <stdlib.h>// Helper function to extract integer value from substring
int getNumber(char* str, int start, int end) {char buffer[12]; // Buffer large enough for max 10 digits + '\0'int length = end - start + 1;strncpy(buffer, str + start, length);buffer[length] = '\0';return atoi(buffer);
}int main() {char str[201];int M;scanf("%s %d", str, &M);int n = strlen(str);int dp[n+1][M+1];// Initialize dp array with large numbersfor (int i = 0; i <= n; i++) {for (int j = 0; j <= M; j++) {dp[i][j] = INT_MAX;}}// Base case: no splitsdp[0][0] = 0;// Dynamic programming to calculate minimum sumfor (int i = 1; i <= n; i++) {for (int j = 0; j <= M; j++) { // j can be 0 as wellif (j == 0) {dp[i][j] = getNumber(str, 0, i-1);} else {for (int k = 1; k < i; k++) { // k starts from 1if (dp[k][j-1] != INT_MAX) {int num = getNumber(str, k, i-1);if (dp[k][j-1] + num < dp[i][j]) {dp[i][j] = dp[k][j-1] + num;}}}}}}// Find the minimum value in dp[n][*] with M splitsint result = INT_MAX;for (int i = 0; i <= M; i++) {if (dp[n][i] < result) {result = dp[n][i];}}printf("%d\n", result);return 0;
}

执行结果 

 结语       

欲望以提升热忱

毅力以磨平高山

!!!

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

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

相关文章

Java异常体系、UncaughtExceptionHandler、Spring MVC统一异常处理、Spring Boot统一异常处理

概述 所有异常都是继承自java.lang.Throwable类&#xff0c;Throwable有两个直接子类&#xff0c;Error和Exception。 Error用来表示程序底层或硬件有关的错误&#xff0c;这种错误和程序本身无关&#xff0c;如常见的NoClassDefFoundError。这种异常和程序本身无关&#xff0…

Java网络模型全扫盲

概述 讲述ava层面NIO基础知识&#xff0c;用作基础回顾所用 1. NIO概述 ​ 在Java中&#xff0c;NIO&#xff08;Non-blocking I/O 或 New I/O&#xff09;是Java SE 1.4及后续版本中引入的一套新的输入/输出操作API。 ​ 它与传统的IO模型相比&#xff0c;提供了更高的效率和…

【算法】二叉树-迭代法实现前后中序遍历

递归的实现就是:每一次递归调用都会把函数的局部变量&#xff0c;参数值和返回地址等压入调用栈中&#xff0c;然后递归返回的时候&#xff0c;从栈顶弹出上一次递归的各项参数&#xff0c;这就是递归为什么可以返回上一层位置的原因 可以用栈实现二叉树的前中后序遍历 1. 前序…

FastAPI 学习之路(四十四)WebSockets

我们之前的分析都是基于http的请求&#xff0c;那么如果是websockets可以支持吗&#xff0c;答案是可以的&#xff0c;我们来看下是如何实现的。 from fastapi import WebSocket, FastAPI from fastapi.responses import HTMLResponseapp FastAPI()html """&…

k8s NetworkPolicy

Namespace 隔离 默认情况下&#xff0c;所有 Pod 之间是全通的。每个 Namespace 可以配置独立的网络策略&#xff0c;来 隔离 Pod 之间的流量。 v1.7 版本通过创建匹配所有 Pod 的 Network Policy 来作为默认的网络策略 默认拒绝所有 Pod 之间 Ingress 通信 apiVersion: …

【趣味数学】求阴影部分面积

题 解法1: 中位线法 既然是中点&#xff0c;就可以用起来&#xff0c;横着不行&#xff0c;竖着来&#xff0c;扩展做辅助线 E是中点S&#xff08;AED) 1/4 S(ABCD) 6 做图中辅助延长线&#xff0c;因为E中点&#xff0c;所以S&#xff08;MEB&#xff09;S(AED) 6 同理E也是…

nfs共享存储配置

目录 一.存储和NFS共享 1.存储的类型分为三种 2.三种存储架构的应用场景 二.NFS共享存储服务 1.NFS简介 2.NFS存储 3.NFS原理 4.软件介绍 三.搭建NFS服务器 1.搭建 2.使用权限&#xff1a; 读写权限 属主&#xff0c;属组权限 客户端创建文件指向同一属主和属组 …

Android使用AndServer在安卓设备上搭建服务端(Java)(Kotlin)两种写法

一直都是通过OkHttp远程服务端进行数据交互&#xff0c;突发奇想能不能也通过OkHttp在局域网的情况下对两个安卓设备或者手机进行数据交互呢&#xff1f; 这样一方安卓设备要当做服务端与另一个安卓设备通过OkHttp进行数据交互即可 当然还可以通过 socket 和 ServerSocket 通…

大数据面试题之Hudi(1)

目录 Hudi的发展历史 描述Hudi的容错和恢复机制 Hudi的核心优势是&#xff1f; Hudi如何处理数据的变更&#xff1f; Hudi如何保证数据的一致性和可靠性&#xff1f; Hudi如何支持数据的多版本并发控制&#xff08;MVCC&#xff09;&#xff1f; Hudi的数据摄取&#xff…

uniapp中使用uni-ui组件库

src目录下新建components目录从uni-ui引入对应的组件目录&#xff0c;如下图 直接使用组件&#xff0c;demo <template><view id"my" data-name"王五" data-age"18">my页面</view><uni-data-select :localdata"local…

为什么要求轨迹平滑?

移动机器人要求轨迹平滑主要是为了确保移动过程的安全、稳定和效率。具体原因如下&#xff1a; 安全性&#xff1a;平滑的轨迹可以减少机器人在移动过程中的震动和冲击&#xff0c;避免对机器人自身结构和周围环境造成损害。稳定性&#xff1a;平滑的轨迹有助于保持机器人的平…

IC后端设计中的shrink系数设置方法

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 在一些成熟的工艺节点通过shrink的方式(光照过程中缩小特征尺寸比例)得到了半节点,比如40nm从45nm shrink得到,28nm从32nm shrink得到,由于半节点的性能更优异,成本又低,漏电等不利因素也可以…

Zookeeper-数据结构

ZooKeeper 的数据模型具有类似于文件系统树结构的特点&#xff0c;但它是专门为分布式应用设计的。 以下是 ZooKeeper 数据结构的主要特点&#xff1a; 层次化的命名空间&#xff1a;ZooKeeper 提供了一个层次化的命名空间&#xff0c;类似于文件系统。每个节点在层次结构中有…

PFH点特征直方图

PFH特征描述子原理 该算法通过参数化查询关键点与其周围邻域点之间的空间差异,形成一个多维度直方图,从而实现对该点的邻域几何属性的描述。 该方法具有以下三个优势: (1)刚性变换不变性,即不受旋转、平移变换的影响; (2)采样一致性,即改变采样密度,特征保…

python连接kafka生产者发送消息

通过pip install kafka-python安装第三方工具 再导入相应的方法就可以连接kafka进行消息发送了。 from kafka import KafkaProducer, KafkaConsumer import jsonproducer KafkaProducer(bootstrap_servers[xxx.xxx.xxx.xxx:9092,xxx.xxx.xxx.xxx:9092],security_protocolSASL…

【数据分享】2021-2100年中国1km分辨率多情景多模式逐月降水量数据集

今天我们给大家分享一份根据IPCC耦合模式比较计划第六阶段&#xff08;CMIP6&#xff09;发布的全球>100 km气候模式数据集以及WorldClim发布的全球高分辨率气候数据集&#xff0c;通过空间降尺度方法得到的2021-2100年中国1km分辨率多情景多模式逐月降水量数据集。 数据来…

04:定时器

定时器 1、定时器怎么定时2、怎样实现计数&#xff1f;2.1、控制寄存器TCON2.2、工作模式寄存器TCOM2.3、定时器T0 3、案例&#xff1a;通过定时器T0控制LED间隔1s亮灭 当定时器用的时候&#xff0c;靠内部震荡电路数数。当配置为定时器使用时&#xff0c;每经过1个机器周期&am…

WPS打开PDF文件的目录

WPS打开PDF文件的目录 其实WPS中PDF文件并没有像Word那样标准的目录&#xff0c;但是倒是有书签&#xff0c;和目录一个效果 点击左上角书签选项&#xff0c;或者使用Alt Shift 1快捷键即可

下载动画人物

1、网址&#xff1a;动画 2、点击Characters 3、搜索人物 4、点击弹出的人物&#xff0c;弹出对话框选择USE THIS CHARACTER 5、下载 6、点击Animations&#xff0c;搜索walk 7、点击UPLOAD CHARACTER&#xff0c;看到男孩步行&#xff0c;选择In Place&#xff0c;点击下载&…

Vue3框架搭建4:配置说明-eslint配置

配置说明&#xff1a; .eslintrc.cjs&#xff1a; /* eslint-env node */ //node环境&#xff0c;并引入一个模块解析补丁 require(rushstack/eslint-patch/modern-module-resolution)module.exports { //继承其他配置root: true, //跟配置文件&#xff0c;ESLint不会在父目…