猫狗收容所

来源:互联网 发布:视频服务器软件有哪些 编辑:程序博客网 时间:2024/04/30 02:59
import java.util.ArrayList;/** * 猫狗收容所 * 有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式: * 第一种为直接收养所有动物中最早进入收容所的; * 第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。 * --------------------------------------------------------------------- * 给定一个操作序列int[][2] 代表所有事件。 * 若第一个元素为1,则代表有动物进入收容所, * 第二个元素为动物的编号,正数代表狗,负数代表猫; * 若第一个元素为2,则代表有人收养动物, * 第二个元素若为0,则采取第一种收养方式, * 若为1,则指定收养狗, * 若为-1则指定收养猫。请按顺序返回收养的序列。 * 若出现不合法的操作,即没有可以符合领养要求的动物,则将这次领养操作忽略。 * --------------------------------------------------------------------- * 用两个动态数组intput 和 output 分别维护被送进收容所的动物和被收养人从收容所领养的动物。 * @author Administrator * */public class CatDogAsylum{    /**     * 操作序列     * A  ope[i][0] = 1 时,有动物被送进收容所     *    ope[i][1] > 0 时,送进来收容所的动物为狗;     *    ope[i][1] < 0 时,送进来收容所的动物为狗;     *         * B  ope[i][0] = 2 时,有动物被人领养     *    ope[i][1] = 0 时,收养最早进入收容所的动物     *    ope[i][1] = 1 时,收养最早进入收容所的狗     *    ope[i][1] =-1 时,收养最早进入收容所的猫     */    int[][] ope;    public static ArrayList<Integer> asylum(int[][] ope){        //收容所        ArrayList<Integer> input = new ArrayList<Integer>();        //领养        ArrayList<Integer> output = new ArrayList<Integer>();        if(ope == null || ope.length == 0) return null;        for(int i = 0;i < ope.length;i++){            switch(ope[i][0]){            //有动物进入收容所            case 1:                input.add(ope[i][1]);                break;            //有动物要被领养            case 2:                //1 领养最早进入收容所的动物                if(ope[i][1] == 0){                    for(int j = 0;j < input.size();j++){                        if(input.get(j) != 0){                            output.add(input.get(j));                            input.set(j,0);                            break;                        }                    }                }                //2 领养最早进入收容所的狗                else if(ope[i][1] == 1){                    for(int j = 0;j < input.size();j++){                        if(input.get(j) > 0){                            output.add(input.get(j));                            input.set(j,0);                            break;                        }                    }                }                //2 领养最早进入收容所的猫                else if(ope[i][1] == -1){                    for(int j = 0;j < input.size();j++){                        if(input.get(j) < 0){                            output.add(input.get(j));                            input.set(j,0);                            break;                        }                    }                }                break;            }        }        return output;    }}
原创粉丝点击