- 博客(5)
- 收藏
- 关注
原创 OJ1797金银岛
这个做法就是多重背包的优化做法,用到本题来解,第一次由于数据类型都用的float,只过了5个案例,我以为多重背包解法不行,就考虑使用贪心做法(实际上是我的数据类型是float而不是double 导致的错误)本人第一次思路采用多重背包问题,将每组物品看成重量为一的若干物品组成,价值就是总价值除以重量,附上多重背包做法代码。以下附上贪心做法,就是求出每组的平均价值,按照平均价值从大到小排序,按照排序后的顺序进行装包。提交了四次,两种做法分别提交了两次,没通过的原因都是因为数据类型定义错误,大家一定要注意。
2025-03-12 15:36:12
182
原创 OJ8782乘积最大
dp[i][j]:表示将字符串从位置1到位置i划分成j部分后的最大乘积。a[i][j]:表示从位置i到位置j的数字的乘积。s:输入的数字字符串。
2025-03-06 19:26:13
351
原创 OJ8780拦截导弹
这道题数据不大,可以复杂度n^2来解,如果范围较大,要采用二分把复杂度降到nlogn,以后碰到详细解答。很简单的一道最长不上升子序列,一般dp学的都是最长上升子序列,判断条件微改即可。
2025-03-06 11:30:45
197
原创 OJ2989吃糖果问题
我最开始思路是先算出总共糖果数量,然后找出小于总数量最大的k的倍数,作为新的背包容量,套用01背包模板,但是会爆内存,过了8个测试点,附一下代码。后来想了想,如果每组的糖果都取到最大值1e6,并且有100组,就会爆内存。所以就在想怎么把背包最坏情况下的容量变小呢?
2025-03-06 10:09:25
1038
原创 编写一个程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型,要求使用重载函数实现。注意:编程时,题目中的n可以指定为一个整数,如6等。
没有使用指针,主函数内使用了switch语句#include<iostream>using namespace std;int main(){int n,m, a[1000];//n小于1000float b[1000];double c[1000];void sort(int a[], int n);void sort(float a[], int n);void sort(double a[], int n);cout <<
2022-09-06 11:45:37
1945
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人