题目3:
小W非常喜欢吃零食,经常都会去零食间里购买半价的零食吃,但是他为了控制自己的体重,因此会限制自己买零食的开销在某个数值以内。
但是小W有一个特别的爱好,他对于某些零食特别的喜欢,并且会对这些零食的喜爱成都进行排序。对于零食A和零食B,如果小W对零食A的喜爱程度大于对零食B的喜爱程度,那么每次拿零食的时候,一定会确保A的数目比B多。
现在零食间里有N种零食,假设每种零食都是取不完的,但小W每次都会刚好花完所有的开销,那么小W去取零食的时候应该有多少种可能的取法呢?

输入:
输入包含多组测试数据,每组数组:
第一行:买零食的开销 V (V < 1000) 和 所有的零食种类数目 N (N < 200)。
第二行:第 i 个正整数表示第 i 种零食的价格 c_i (c_i < 1000)。
第三行:特别喜欢的零食的种类数 M (2 <= M <= N)
第四行:按照对 M 种零食的喜爱程度从高到低排序,第 i 种零食的喜爱程度会大于第 i + 1 种,保证不会形成环
样例输入:
5 2
1 2
2
2 1
输出
1

方法:DFS递归
思路:先对价格按照喜欢程度进行排序,然后用dfs进行递归,判断购买的品种是否超过喜欢的品种和所有的品种,然后将上一种买的种类也带进去进行判断,不能超过上一种喜欢的

public class test3 {int lastnumber=1000;static int res=0;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int cost = sc.nextInt();int kind = sc.nextInt();int[] price = new int[kind];for (int i = 0; i <kind ; i++) {price[i]=sc.nextInt();}int like = sc.nextInt();int[] likes = new int[kind];for (int i = 1; i <=like ; i++) {likes[sc.nextInt()]=i;}//根据喜爱顺序将价格排序for (int i = 0; i <kind-1 ; i++) {for (int j = 0; j <kind-i-1 ; j++) {if(likes[j]>likes[j+1]){swap(likes,j,j+1);swap(price,j,j+1);}}}dfs(price,kind,like,cost,0,1000);System.out.println(res);}public static void dfs(int[] price,int kind,int like,int rest,int layer,int lastnumber){if(rest==0){res++;return;}if(layer>=kind) return;if(layer<like){for (int i = 0; i <=lastnumber ; i++) {if(rest-i*price[layer]<0) return;dfs(price,kind,like,rest-i*price[layer],layer+1,i);}}else{int t=rest/price[layer];for (int i = 0; i <=t ; i++) {if(rest-i*price[layer]<0) break;dfs(price,kind,like,rest-i*price[layer],layer+1,i);}}}public static void swap(int[] arr1,int i,int j){int temp = arr1[i];arr1[i]=arr1[j];arr1[j]=arr1[i];}
}

2020大疆校招B卷第三题相关推荐

  1. 2020大疆校招B卷第二题

    题目: 小B平时喜欢倒腾一些小东西,最近他准备给自己做的小机器人加入一套语音控制的功能,每个指令对应一个动作. 由于语言转文字有很多现成的方案,所以小B打算直接复用这些方案,但是语音转成了文字之后,还 ...

  2. 2020大疆校招嵌入式B卷编程题

    题考的比较基础,同时也很注重细节,最坑的是不能用本地编译器编译测试,在线的也不能,只能手写 1.写宏定义 (1)x对a向下取整数倍的宏定义ALIGN_DOWN(x, a) 例子(65,3)->6 ...

  3. 2020大疆秋招笔试题B卷

    2020大疆秋招笔试题B卷 选择题(选项没抄下来)10道记了9道 1.关于常指针和指向常量的指针 2.多线程调用如下函数,a,b,c哪些需要加锁保护 int a = 0; void knit() {s ...

  4. 校招回顾,大疆校招可内推

    已经入职大疆两个月了,感觉来对地方了. 我也知道不太可能一直在这个地方工作,但是很幸运走出校园的第一份工作是在大疆. 这里的技术氛围很好,有很多厉害的同事,组织管理相对扁平化,leader非常随和(每 ...

  5. 数字IC笔试题,大疆校招16题(仅供参考)

    \\\插播一条: 自己在今年整理一套单片机单片机相关论文800余篇 论文制作思维导图 原理图+源代码+开题报告+正文+外文资料 想要的同学私信找我. 数字IC笔试题,大疆校招16题(仅供参考) 1.异 ...

  6. 前端智勇大闯关-第二季-第三题

    前端智勇大闯关-第二季-第三题 10的世界 在我们的世界里,字母A很好理解 键盘兄表示65无压力 CPU表示01000001才是王道 1.题目中描述的三句话:二进制与十进制与A之间的相互转换 2.在t ...

  7. 背包问题 2020年小米校招JAVA岗笔试第二题

    对于背包问题:例如小偷东西问题 如上图 小偷最多可以带走重量位20.要尽可能带走多的商品. 所以应该设置数组capacity[20+1], 商品itmes [5+1] 其中,capacity[0]=0 ...

  8. 大疆网上测评题库_大疆校招笔试题及参考(一个小编程题)

    大疆 科技的校招 笔试 题(的一个小编程题) 底下的答案仅供参考. // 两个小车,走一步能量消耗 1 ,方向为 1 向右, -1 为向左,首先输入路途长 度,然后输入两行,每行第一个为小车的能量,第 ...

  9. 大疆校招测评题--循环赛问题

    笔者在2022.7参加了大疆的测评题. 其中有道循环赛问题,记录下解题思路. 循环赛问题 六名选手A, B, C, D, E, F进行循环赛. 每两名选手间比赛一次,每名选手每天比赛一场. 五天内完成 ...

最新文章

  1. 另存为里面没有jpg_选用打印捕捉功能将 SolidWorks 画面另存为JPG格式高清大图
  2. JavaScript基础---语言基础(1)
  3. CondenserDotNet - 使用 Kestrel 和 Consul 的 API 反向代理库!
  4. Gvim开发环境配置笔记--Windows篇
  5. 前魅族李楠创办“怒喵科技”,网友:看半天不知道公司干嘛的
  6. yii2 gii页面404和debug调试栏无法显示解决方法
  7. 张大哥笔记-有哪些可傻瓜式建站的开源网站程序
  8. 自然语言处理-停用词
  9. Tomcat内存溢出及配置解决方案
  10. 微信公众号-网页内实现微信支付
  11. git 拉取代码时提示:would clobber existing tag
  12. 什么是云计算,什么是网格计算,他们之间有什么区别
  13. python从图片提取文字_Python实现从图片提取文字
  14. Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations...
  15. manifestintert-filter详解
  16. performance API 中什么指标可以衡量首屏时间
  17. shiro 拦截器链
  18. Idea设置代码自动提示快捷键
  19. opencv 图像填充
  20. 阿里云个人账户如何变更为企业用户

热门文章

  1. 微信小程序绘制自定义海报,可带二维码,头像,文字等
  2. 桌面管理器(gdm、lightdm)启动后——到界面显示时间优化
  3. 根据拓扑图,实现PC端通交换机ping通路由器loop back地址
  4. 团队协同办公管理工具横向对比:Worktile VS Teambition VS Tita VS Tapd
  5. 视频资源网站采集-视频资源API采集教程
  6. Electron-Builder打包时报错could not find: “\XXX\0-messages.nsh“
  7. 计算机素质教育论文800,关于素质教育的作文800字
  8. 树莓派安装开源智能家居系统 Domoticz
  9. 副屏幕全屏_win7双屏电脑主屏副屏设置|Win7系统如何设置双屏显示?
  10. 物联网云平台将成为产业生态的核心