zoukankan      html  css  js  c++  java
  • 2017网易秋招--7、买苹果

    题目描述:(DP问题

    小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。 
    输入描述:
    输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果
     
     
    输出描述:
    输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1
     
    输入例子:
    20
     
    输出例子:
    3
    思路:DP问题。首先dp[i] = min(dp[i],dp[i-a[j]+1)。输入苹果总个数,把dp初始为sum,这样保证最后dp[sum] = sum则没有可以正好sum的结果,否则输入dp[sum]
     1 #include <iostream>
     2 using namespace std;
     3 //dp[i] = min(dp[i],dp[i-a[j]+1)
     4  
     5 int main()
     6 {
     7     int sum;
     8     while(cin>>sum)
     9     {
    10         int a[2] = {6,8};
    11         int dp[100];
    12         dp[0] = 0;//也是关键之处
    13         for(int i=1;i<100;i++)
    14         {
    15             dp[i] = sum;
    16         }
    17         for(int i=0;i<=sum;i++)
    18         {
    19             for(int j=0;j<2;j++)
    20             {
    21                 if(i>=a[j] && dp[i-a[j]] + 1 < dp[i])
    22                 {
    23                     dp[i] = dp[i-a[j]]+1;
    24                 }
    25             }
    26         }
    27         if(dp[sum] == sum)
    28             cout<<-1<<endl;
    29         else
    30             cout<<dp[sum]<<endl;
    31         return 0;
    32     }
    33 }
  • 相关阅读:
    3/10
    2/10
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
    Beta 冲刺(5/7)
    Beta 冲刺(4/7)
    Beta 冲刺(3/7)
    Beta 冲刺(2/7)
  • 原文地址:https://www.cnblogs.com/qqky/p/6796061.html
Copyright © 2011-2022 走看看