??牛客网–点菜问题(01背包问题)

??牛客网–点菜问题(01背包问题)

题目描述
北大网络实验室经常有活动需要叫外卖,但是每次叫外卖的报销经费的总额最大为C元,有N种菜可以点,经过长时间的点菜,网络实验室对于每种菜i都有一个量化的评价分数(表示这个菜可口程度),为Vi,每种菜的价格为Pi, 问如何选择各种菜,使得在报销额度范围内能使点到的菜的总评价分数最大。 注意:由于需要营养多样化,每种菜只能点一次。
输入描述:
输入的第一行有两个整数C(1 <= C <= 1000)和N(1 <= N <= 100),C代表总共能够报销的额度,N>代表能点菜的数目。接下来的N行每行包括两个在1到100之间(包括1和100)的的整数,分别表示菜的>价格和菜的评价分数。
输出描述:
输出只包括一行,这一行只包含一个整数,表示在报销额度范围内,所点的菜得到的最大评价分数。
链接:https://www.nowcoder.com/questionTerminal/b44f5be34a9143aa84c478d79401e22a
来源:牛客网

     #include<bits/stdc++.h>
using namespace std;

struct cai{
    int price;
    int score;
}cai[101];
    
    
int max(int i,int j){
    return (i>j)?i:j;
}


int main(){
    int c,n;//c报销总额,n菜的数目
    int dp[1001];//对应报销额的评分
    while(cin>>c>>n){
        for(int i=0;i<n;i++){
            cin>>cai[i].price>>cai[i].score;
        }
      memset(dp,0,sizeof(dp));
        for(int i=0;i<n;i++){//菜的种类
            for(int j=c;j>=cai[i].price;j--){//可报销的额度(限制因素)
                dp[j]=max(dp[j],dp[j-cai[i].price]+cai[i].score);
            }
        }
        cout<<dp[c]<<endl;
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100215.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis的常用动态sql标签

    mybatis的常用动态sql标签一.定义sql语句select标签属性介绍:id:唯一的标识符.parameterType:传给此语句的参数的全路径名或别名例:com.test.poso.User或userresultType:语句返回值类型或别名。注意,如果是集合,那么这里填写的是集合的泛型,而不是集合本身(resultType与resultMap不能并用)<selectid=…

    2022年6月23日
    144
  • windows 安装 yarn「建议收藏」

    windows 安装 yarn「建议收藏」windows安装yarn下载node.jshttp://nodejs.cn/download/通过Chocolatey安装以管理员身份打开cmd.exe@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"-NoProfile-InputFormatNone-ExecutionPolicy…

    2022年5月12日
    34
  • Java对象转换Map(工具类)[通俗易懂]

    Java对象转换Map(工具类)[通俗易懂]/***@Description//TODOMap工具类*@Date2020/5/79:54*@Authorhuangwb**/publicclassMapUtils{/***@returnvoid*@Authorhuangwb*@Description//TODO对象转换成map*…

    2022年6月8日
    39
  • recvfrom设置超时

    recvfrom设置超时structtimevaltv;intret;tv.tv_sec=10;tv.tv_usec=0;if(setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv))<0){ printf("socketoptionSO_RCVTIMEOnotsupport\n"); return;}if((ret

    2022年7月23日
    11
  • 数据库查询语句中的排序函数_数据库按照升序排列的语句

    数据库查询语句中的排序函数_数据库按照升序排列的语句1.排序查询语法排序查询语法:select*from表名orderby列1asc|desc[,列2asc|desc,…]语法说明:先按照列1进行排序,如果列1的值相同,则按照列2排序,以此类推asc从小到大排序,即升序desc从大到小排序,即降序默认按照从小到大排序(即asc关键字)举例:–查询未删除男生信息,按学号降序select*fromstudentswhereis_del=0andgender=’男’orderbyid

    2022年9月7日
    0
  • 移动端H5开发基础[通俗易懂]

    移动端H5开发基础[通俗易懂]文章目录前言一、移动端屏幕相关概念1.屏幕尺寸2.屏幕分辨率3.屏幕像素密度(ppi=pixelsperinch)二、像素1.物理像素2.CSS像素3.设备独立像素4.位图像素5.像素比(dpr)三、视口1.布局视口2.视觉视口3.理想视口三、缩放行为1.用户缩放2.系统总结前言随着移动端H5需求场景越来越多,例如微信公众号中H5页面的开发,APP中内嵌H5页面等,移动端H5开发基础知识和技巧是前端开发工程师必备的技能~一、移动端屏幕相关概念1.屏幕尺寸.

    2022年6月21日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号