题目详述

题目链接:卡中心美食家

题目解析

1、在读入信息后,对其每个菜肴是否吃过需要建立一个标志数组,对每个菜肴为键,存储其包括的前置菜肴,由于前置菜肴数量不确定,所以需要用ArrayList来存储,用到 HashMap。

2、创建一个函数foodput,来具体实现对菜肴的放置,需要注意是否有互相制约,比如1是2的前置,2是1的前置,需要处理这种情况,调用栈来检查这种情况,当栈的长度超出了菜肴的总数,抛出异常,所以在主函数中需要处理异常。

程序测试

import java.util.*;public class Main {static int[] flag;//标志其每个菜肴是否已经吃过static ArrayList<Integer> re=new ArrayList<Integer>();//存最后返回的ArrayListstatic Stack<Integer> st=new Stack<Integer>();//用来判断前置菜肴和现在的是否为重叠的static int n=0;public static void main(String[] args) {Scanner s=new Scanner(System.in);Map<Integer,ArrayList<Integer>> arr=new HashMap<Integer,ArrayList<Integer>>();n= s.nextInt();int len_fan=s.nextInt();for(int i=0;i<len_fan;i++) {int a=s.nextInt();int v=s.nextInt();if(arr.containsKey(a)) {ArrayList<Integer> temp= new ArrayList<Integer>();temp=arr.get(a);temp.add(v);arr.put(a,temp) ;//先得到目前的菜肴,加上后放回去}else {ArrayList<Integer> fan= new ArrayList<Integer>();fan.add(v);arr.put(a, fan);//没有的时候新建一个放入MAP        }}flag=new int[n];for(int j=0;j<n;j++) {flag[j]=0;}try {for(int k=0;k<n;k++) {foodput(arr,k);}//System.out.println(re);int len_re=re.size();for(int i=0;i<len_re-1;i++){System.out.print(re.get(i));System.out.print(",");}System.out.print(re.get(len_re-1));  //这里对输出的调整,最后一个没有,}catch(Exception e) {System.out.println("None");}}public static void foodput(Map<Integer,ArrayList<Integer>> arr,int k) throws Exception {if(flag[k]==0) {st.push(k);if(st.size()>n) {//出现互相制约的throw new Exception();}if(arr.containsKey(k)) {for(int j : arr.get(k)) {foodput(arr,j);    //这里需要递归调用其前置菜肴是否吃完}}st.pop();re.add(k);flag[k]=1;}}
}

招行卡中心编程题_卡中心美食家相关推荐

  1. 环评师c语言题目,C语言考试——编程题_文库吧

    C语言考试--编程题_文库吧 2020-09-27 08:21:23 [导读]该数本身,比如153=13+53+33,故153是水仙花数).要求将判断某数是否素数的功.能编成一个独立的函数,然后在ma ...

  2. Linux环境编程姜林美,Linux环境编程习题_编程题_答案.pdf

    Linux环境编程习题_编程题_答案 Linux 境编程-人民邮电出版社-姜林美 课后习题(编程题)答案 第三章 1 第五章 4 第六章 9 第七章 19 第八章 22 第九章 35 第十章 38 三 ...

  3. Java编程题_面向对象和常用API01_B级

    Java编程题_面向对象和常用API01_B级 第1题 面向对象.异常.集合.IO 题干: 请编写程序,完成键盘录入学生信息,并计算总分将学生信息与总分一同写入文本文件 需求:键盘录入3个学生信息(姓 ...

  4. 数据结构面试题编程题_您下次编程面试时应该了解的顶级数据结构

    数据结构面试题编程题 by Fahim ul Haq 通过Fahim ul Haq Niklaus Wirth, a Swiss computer scientist, wrote a book in ...

  5. java在线编程题_阿里笔试题(2017在线编程题)-- 数串分组 --Java实现

    看到有人写了阿里的面试题,心里痒痒,好久 没搞过这些了,写着实现一下 题目 2017年3月阿里在线编程题(实习内推) 给定一串数字 判断是否存在这三个元素,它们将数字串分为四个子串,其中每个子串的数字 ...

  6. javaee编程题_在JavaEE中使用CDI的简单面向方面的编程(AOP)

    javaee编程题 我们编写满足特定业务逻辑的服务API. 涵盖所有服务API(如安全性,日志记录,审核,度量延迟等)的跨领域问题很少. 这是一个重复的非业务代码,可以在其他方法之间重用. 重用的一种 ...

  7. javascript编程题_如何开始使用JavaScript进行竞争性编程

    javascript编程题 by Priyabrata Biswas 通过Priyabrata Biswas 如何开始使用JavaScript进行竞争性编程 (How to get started w ...

  8. 大学期末考java编程题_大学java期末考试考试题和答案

    题号 一 二 三 总分 得分 得分 评卷人 一.简单编程题 < 共 50 分) 在考试文件夹中新建一个应用程序 proj1< 应用程序的文件夹名称为 proj1 ),按照以下要求编写程序代 ...

  9. java 编程题_最新JAVA编程题全集(50题及答案)92862

    <最新JAVA编程题全集(50题及答案)92862>由会员分享,可在线阅读,更多相关<最新JAVA编程题全集(50题及答案)92862(32页珍藏版)>请在人人文库网上搜索. ...

最新文章

  1. 关于MM32-Link Programmer软件修改建议
  2. 解决AJAX跨域WCF的问题详解
  3. 扩展源_视觉框架SimpleCV - 图像源
  4. 4.odoo13的学习(odoo中的xml)
  5. 使用Docker启动Grafana环境
  6. oracle flex cluster,【Ora12c-GI】将Standard集群修改为Flex集群
  7. VR一体机行业调研:用户活跃未达预期,广告收益前景堪忧
  8. 三万字带你了解那些年面过的Java八股文
  9. 解决WPS2000非正常删除后的重安装问题(转)
  10. linux编译生成动态库、静态库,以及使用
  11. PDF转换成word转换器绿色版使用步骤
  12. 计算机word简历制作教程,用word制作个人简历的方法
  13. uniapp微信小程序地图中叠加polygon
  14. c++语言判断是否质数,怎样用C++程序判断一个数是否为素数
  15. Google Earth Engine谷歌地球引擎GEE栅格数据图层可视化设置代码嵌入
  16. 生物信息学笔记03 -- 基因组序列分析 方法
  17. 端午节(文章来源于网络)
  18. AI产业链的划分,主要可分为基础层、技术层和应用层
  19. php 豆瓣api_豆瓣的账号登录及PHP api操作
  20. LNK2038: “_ITERATOR_DEBUG_LEVEL”的不匹配项

热门文章

  1. VirtualBox配置CentOS-7虚拟机:FATAL: Could not read from the boot medium! System halted .
  2. mysql bin-log,relay-log删除方法
  3. 论文导读 | 知识图谱质量控制
  4. 国产高精度比较器MS762/M、MS761 对标SGM8742YMS8
  5. 由微信指数联想到大数据的两种应用方式
  6. Q新闻丨Go 语言排行飙升至前十;GitHub 已切换到 Kubernetes;陆奇最新内部演讲:如何成为一个优秀的工程师?...
  7. 深度体验:6.2英寸大屏手机三星S8+ 让你玩到爽
  8. 加快chorme浏览器下载速度
  9. Quicker -- 新一代Windows效率神器(转)
  10. 挑战全网最详细靶机教程——vulnhub靶机实战 lampiao【适合刚接触的新人学习】