• 《01-背包问题-点菜》


    解决代码

     1 import java.util.Scanner;
     2 
     3 public class Main {
     4     
     5     //身上拥有的钱
     6     private static int M;
     7     //拥有的测试用例
     8     private static int N;
     9     //用例记录每道菜的价格
    10     private static int [] array =new  int [1001];
    11     //记录方案
    12     private static int [][] V = new int [1001][1001];
    13     
    14     
    15     public static void main(String[] args) {
    16         
    17         Scanner in = new Scanner(System.in);
    18         N = in.nextInt();
    19         M = in.nextInt();
    20         for(int i = 1;i<=N;i++)
    21         {
    22             array[i] = in.nextInt();
    23         }
    24         FindTotal();
    25         
    26     }
    27     
    28     public static void FindTotal()
    29     {
    30         for(int i = 1;i<=N;i++)
    31         {
    32             for(int j = 1;j<=M;j++){
    33                 //如果钱刚好够用  方案总数等于  没有这个菜品时候的方案总数+1
    34                 if(j==array[i]){
    35                     V[i][j]=V[i-1][j]+1;
    36                 }
    37                 
    38                 //如果钱够用的话,总的方案数目  等于吃这道菜的方案数目+不吃这道菜的方案数目
    39                 if(j>array[i]){
    40                     V[i][j] = V[i-1][j]+V[i-1][j-array[i]];
    41                 }
    42                 
    43                 //如果钱不够用的情况 、等于不选这道菜的所有情况
    44                 if(j<array[i]){
    45                     V[i][j] = V[i-1][j];
    46                 }
    47             }
    48         }
    49         
    50         System.out.println(V[N][M]);
    51     }
    52 
    53 }
  • 相关阅读:
    算法导论13:双向循环链表 2016.1.13
    ansible
    mariadb集群配置(主从和多主)
    连接查询,视图,事物,索引,外键(第四章)
    MariaDB第三章(select)
    mariadb第二章-增删改
    mariadb(第一章)
    keepalived概述
    git操作
    django后台admin管理布局
  • 原文地址:https://www.cnblogs.com/kangxinxin/p/10670278.html
Copyright © 2020-2023  润新知