• 蓝桥杯第一天


             这题就是典型的位数贡献大于数量贡献, 1花的火柴更少,所以尽量用完10个1,然后其实就是简单的背包问题尽量拿最多的物品(数字),限重为300,各物品(数字)的重量即为所需火柴棒的数目,所以直接dp即可,当然也可以心算毕竟数据量不大,发现(2+5+5+4+5+3)*10=240,300-240=6*10,固有数字1,2,3,4,5,7,9各十个然后按照从小到大排序即可。

    固答案为9999999999777777777755555555554444444444333333333322222222221111111111

    1. import java.util.Scanner;
    2. // 1: 无需 package
    3. // 2: 类名必须 Main, 不可修改
    4. public class Main {
    5. public static void main(String[] args) {
    6. System.out.println("9999999999777777777755555555554444444444333333333322222222221111111111");
    7. }
    8. }

            用dp来做的代码即为(参考答案):

    1. public class Main {
    2. // 物品的重量数组,w[i]表示第i种物品的重量
    3. static int[] w = {0, 6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
    4. // f数组用于存储动态规划的结果,f[i][j]表示前i种物品在不超过j重量的情况下的最大价值
    5. static int[][] f = new int[11][310];
    6. public static void main(String[] args) {
    7. // 初始化f数组,这里假设所有物品的价值都是0,因为没有给出价值数组
    8. for (int i = 0; i < f.length; i++) {
    9. for (int j = 0; j < f[i].length; j++) {
    10. f[i][j] = 0;
    11. }
    12. }
    13. // 多重背包动态规划计算过程
    14. for (int i = 1; i <= 10; ++i) { // 从第1种物品开始,到第10种物品
    15. for (int j = 300; j >= w[i]; j--) { // 遍历所有可能的重量,从最大到w[i]
    16. for (int k = 0; k <= 10; ++k) { // 遍历k个物品的组合
    17. // 更新f[i][j]为当前物品加入后的最大价值
    18. // 如果当前重量j大于等于k个物品i的重量,那么可以考虑加入k个物品i
    19. if (j >= k * w[i]) {
    20. f[i][j] = Math.max(f[i][j], f[i - 1][j - k * w[i]] + k); // 选择前i-1种物品的最大价值加上当前物品的价值
    21. }
    22. }
    23. }
    24. }
    25. // 打印结果,从f[10][300]开始回溯找到选择的物品
    26. int j = 300;
    27. for (int i = 10, k = 0; i > 0; --i, k = 0) {
    28. for (int g = 1; g <= 10; ++g) { // 遍历所有可能的选择数量
    29. // 如果当前重量j减去g个物品i的重量仍然非负,并且f[i][j]等于f[i-1][j-g*w[i]]加上g个物品i的价值
    30. if (j - g * w[i] >= 0 && f[i][j] == f[i - 1][j - g * w[i]] + g) {
    31. k = g; // 更新选择的数量
    32. }
    33. }
    34. // 根据选择的数量k,打印对应的物品编号(从0开始,所以减1)
    35. for (j -= k * w[i]; k > 0; --k) {
    36. System.out.print(i - 1);
    37. }
    38. }
    39. }
    40. }

           由于对于基础算法忘得差不多了得去重新学习一下,这几天还在补充java数据结构和基础的函数调用,所以今天就做了几道,没做什么 。

     

     

  • 相关阅读:
    GBase gcrcman 备份恢复工具
    好用的办公软件有哪些
    尚硅谷vue学习p52
    什么是VR虚拟现实体验店|VR主题馆加盟|元宇宙文化旅游
    web自动化测试——入门篇01
    网站代码要点解析
    【js】Date相关方法总结以及格式化的使用
    No qualifying bean of type ‘...‘ available错误解决
    动态链接库(扩展)--调用约定
    贝wa儿歌(安卓)
  • 原文地址:https://blog.csdn.net/m0_63790127/article/details/136607695