伊始

第一次写博客,也不懂该怎么写,看了些大佬的博客,有些许感悟,于是终于下笔。

一 为何写?

了解新事 接触新物

大学生活不想就这样荒废,浑浑噩噩,庸庸碌碌,又混一天,想给自己来点改变,

与人交流 分享想法

人的一生会接触到许许多多的新事物,新思想,可如果只是憋在心中,那又谈何的接触?

坚持写文 锻炼毅力

年初有买过一本手帐,可几个月过去了,翻了翻,也就写了十来页,很可笑,做事基本都是三分钟热度的我,也就为数不多的几件事能坚持了。写博客,希望自己能坚持下去吧。

二 如何写?

琐碎不记 只写我思

首先不会把每日干了什么什么之类的零零碎碎的事写下来,这没有营养,也挺敷衍的,不喜欢。我是个学计算机专业的,打算记录下自己学JAVA的一些相关代码,还有看到的好书的感悟之类。

一周更新2-3次,留点时间来思考。

万事开头难,从小就知道的道理,但是有些事,就是要逼自己去踏出那一脚,不管有多难。

人生中所有的问题,归根结底只有两个——你能够解决的和你不能够解决的。如果是前者,你要想办法解决,如果是后者,你要想办法止损。无论是哪一种情况,哭泣和逃避都无济于事。                                                      ——独木舟《一粒红尘Ⅱ》

                                                                                                                                                            记于2018年5月1日

### 回答1: 小P在开始适逢顿顿书城有购书满元包邮的活动,小P同学欣然前往准备购买一些参考书。一番浏览后,小P初步筛选出本书加入购物车中,其中第本()的价格为元。考虑到预算有限,在最终付款前小P决定再从购物车中删除几本书(也可以不删),以使得剩余图书的价格总和在满足包邮条件的前提下最小。试帮助小P计算,最终选购哪些书可以在花费最少的邮费的前提下完成购买,其中最小的邮费是多少? ### 回答2: 首先,根据题目要求,小 p 想要在购买参考书的同时尽可能地节省预算,因此我们需要找到一种最小代价的购买方案。由于购买满一定金额可免邮费,因此我们需要控制总价不超过该金额。 接下来,我们考虑如何确定删除哪几本书能够达到最小代价。假设小 p 已经选好了一些书,这些书的价格分别为 $p_1, p_2, ..., p_n$,其中第 i 本书的价格为 $p_i$,总价格为 $P=\sum_{i=1}^n p_i$。为了满足包邮条件,小 p 还需要选择一些书来达到满足条件的最小价格。 我们可以通过计算差值的方法来确定取走哪些书。先设要取走的书的价格总和为 $S$,则取走这些书后购买剩余书的总价为 $P-S$。如果购买剩余书的总价小于免邮费的金额,则需要继续选购一些书,直到购买总价不小于免邮费金额。因此,我们需要求出当取走书的价格总和为 $S$ 时,需要再选购的最小价格 $T$。 为了求得 $T$,我们可以按照以下步骤进行: 1.将所有书按照价格从小到大排序。 2.初始化 $S$ 和 $T$ 的值,并设一个指针 $i=1$。 3.将第 $i$ 本书的价格加入 $S$ 中,并将 $i$ 的值加 $1$。 4.如果购买剩余书的总价 $P-S$ 大于等于免邮费金额,则 $T$ 的值等于 0,退出循环。 5.如果购买剩余书的总价 $P-S$ 小于免邮费金额,则需要继续选购一些书。此时,将第 $i$ 本书的价格按照从小到大的顺序逐个加入 $S$ 中,计算购买剩余书的总价,并更新 $T$ 的值,直到购买剩余书的总价不小于免邮费金额。然后退出循环。 最后得到的 $T$ 就是选购剩余书的最小花费,将 $S$ 和 $T$ 相加就是小 p 最终需要花费的最小代价。 需要注意的是,由于本题不同的测试用例中数据集成分不同,因此具体实现时需要注意代码的可扩展性和数据的波动性,以保证算法正确性和效率。 ### 回答3: 首先,需要知道满邮的条件是多少。假设满邮条件为100元。 小 p 筛选出了 10 本书,其中第 3 本的价格为 20 元。我们可以将这些书的价格记录在一个数组中: price = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55] 现在的问题是要从数组中选择一些元素,使得它们的和大于等于 100,并且使得这些元素的和最小。这是一个经典的 0-1 背包问题,可以使用动态规划来解决。 定义一个二维数组 dp[i][j],其中 dp[i][j] 表示前 i 个元素中选择若干个元素,它们的和恰好为 j 所需要的最小花费。对于每个元素,有两种选择:选择它或者不选择它。如果选择第 i 个元素,那么花费就是 price[i-1],并且还需要考虑前 i-1 个元素中选择若干个元素,它们的和为 j-price[i-1] 的最小花费。如果不选择第 i 个元素,那么花费就是前 i-1 个元素中选择若干个元素,它们的和为 j 的最小花费。因此,状态转移方程为: dp[i][j] = min(dp[i-1][j], dp[i-1][j-price[i-1]] + price[i-1]) 边界条件为 dp[0][0] = 0。最终的答案是 dp[10][100],因为前 10 个元素中选择若干个元素,它们的和恰好为 100 所需要的最小花费。 下面是 Python 3 代码:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值