• hihocoder [Offer收割]编程练习赛4


     

    hihocoder [Offer收割]编程练习赛4

    描述

    最近天气炎热,小Ho天天宅在家里叫外卖。他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元。并且如果消费总计满X元,还能享受优惠。小Ho是一个不薅羊毛不舒服斯基的人,他希望选择若干道不同的菜品,使得总价在不低于X元的同时尽量低。

    你能算出这一餐小Ho最少消费多少元吗?

    输入

    第一行包含两个整数N和X,(1 <= N <= 20, 1 <= X <= 100)

    第二行包含N个整数A1, A2, ..., AN。(1 <= Ai <= 100)

    输出

    输出最少的消费。如果小Ho把N道菜都买了还不能达到X元的优惠标准,输出-1。

    样例输入
    10 50
    9 9 9 9 9 9 9 9 9 8
    样例输出
    53

    这是一道非常显然的 背包问题。 直接使用 背包问题的经典解法即可。

    #include <iostream>
    #include <cstdio> 
    #include <cstdlib> 
    #include <cstring>
    using namespace std;
    const int maxn = 101;
    
    int n,x,dp[maxn]; 
    
    
    int main(){
    	//freopen("in.txt", "r", stdin); 
    
    	int i,j,ans,  num[maxn]; 
    	while(scanf("%d %d", &n, &x) != EOF){
    		for(i=0; i<n; i++){
    			scanf("%d", &num[i]); 
    		}
    		memset(dp, 0, sizeof(dp));
    		dp[0] = 1; 
    		for(i=0; i<n; i++){
    			for(j=maxn-1; j>=num[i]; j--){
    				if(dp[j-num[i]]){
    					dp[j] = 1; 
    				}
    			}
    		}
    		ans = -1; 
    		for(i=x; i<maxn; i++){
    			if(dp[i]){
    				ans = i;
    				break; 
    			}
    		}
    		printf("%d", ans); 
    	}
    	return 0; 
    }
    
  • 相关阅读:
    UE4 径向模糊radiu blur
    UE4 小笔记
    UE4 Fade out Mesh
    测试一下运行代码
    javascript——限制范围的拖拽
    javascript——拖拽函数封装
    一个等高布局的小实例
    javascript——拖拽原理小实例
    javascript——自定义右键菜单
    javascript——事件默认行为
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/5747111.html
Copyright © 2020-2023  润新知