博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
招行卡中心编程题_卡中心美食家
阅读量:3943 次
发布时间:2019-05-24

本文共 1093 字,大约阅读时间需要 3 分钟。

题目详述

题目链接:

题目解析

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

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

程序测试

import java.util.*; public class Main {
static int[] flag;//标志其每个菜肴是否已经吃过 static ArrayList
re=new ArrayList
();//存最后返回的ArrayList static Stack
st=new Stack
();//用来判断前置菜肴和现在的是否为重叠的 static int n=0; public static void main(String[] args) {
Scanner s=new Scanner(System.in); Map
> arr=new HashMap
>(); n= s.nextInt(); int len_fan=s.nextInt(); for(int i=0;i
temp= new ArrayList
(); temp=arr.get(a); temp.add(v); arr.put(a,temp) ;//先得到目前的菜肴,加上后放回去 }else { ArrayList
fan= new ArrayList
(); fan.add(v); arr.put(a, fan);//没有的时候新建一个放入MAP } } flag=new int[n]; for(int j=0;j
> 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; } }}

转载地址:http://phjwi.baihongyu.com/

你可能感兴趣的文章
this作用域、javascript面向…
查看>>
提高网页在IE和Firefox上的…
查看>>
提高网页在IE和Firefox上的…
查看>>
php的正则表达式 '/\b\w…
查看>>
ThinkPHP的标签制作及标签调用解析…
查看>>
jQuery.proxy()代理、回调方法
查看>>
php操作memcache的使用测试总结
查看>>
JS创建类和对象
查看>>
完整ASCII字符表(转)
查看>>
jquery事件重复绑定解决办法
查看>>
jQuery.extend 函数详解
查看>>
mysqli_query和mysql_query有何区…
查看>>
mysqli->multi_query()多条语句的…
查看>>
php引用(&)变量引用,函数引用,对…
查看>>
[转]yii执行流程(一 目录文…
查看>>
无需重启服务器让系统环境变量生效…
查看>>
配置CakePHP
查看>>
JQuery中$.ajax()方法参数详…
查看>>
JS 简易滚动条
查看>>
PHP __call()方法
查看>>