算法题:假设一列火车一共经过10个车站,车站按顺序为 A B C D E F G H I J ,编写一个程序,自动计算剩余的票

假设一列火车一共经过10个车站,车站按顺序为 A B C D E F G H I J ,编写一个程序,自动计算剩余的票
    要求:1 假设火车有100个座位
       2.程序可以输入购买车票的起始站与结束站
       3.输入后,程序输出剩余车票,
       4.如剩余车票大于0,用户此时可以输入购买,购买后,车票减一,
       5.依次循环

    例如  输入   C F
             输出  100
             输入  buy
             输出  buy ok
             输入  A  J       难点   输入 A B
             输出 99                 输出100

JAVA代码如下:

public class RailWay {
    public static List<String> lists= new ArrayList<String>();
    public static int getNums(char start, char end) {
        int cnt = 100;
        Iterator<String> its = lists.iterator();
        while(its.hasNext()) {
            String str = its.next();
            char[] piaoDetail = str.toCharArray();
            for(int i=0; i<piaoDetail.length; i++) {
                int mark = 0;
                for(char j=start; j<=end; j++) {
                    if(piaoDetail[i]==j) {
                        cnt--;mark=1;break;
                    }
                }
                if(mark==1)
                    break;
            }
        }
        return cnt;
    }

    public static void main(String[] args) {
        @SuppressWarnings("resource")
        Scanner s = new Scanner(System.in);
        while(true) {
            System.out.println("请输入起点:");
            String a = s.next();
            char start = a.toCharArray()[0];
            System.out.println("请输入终点:");
            String b = s.next();
            char end = b.toCharArray()[0];
            if(start>='A' && end <='J') {
                if(getNums(start, end)>0) {
                    System.out.println("剩余票:" + getNums(start, end));
                    if(getNums(start, end) > 0) {
                        System.out.println("确认买票输入‘buy’");
                        String in = s.next();
                        if("buy".equalsIgnoreCase(in)) {
                            StringBuffer sb = new StringBuffer("");
                            for(char i=start;i<=end ;i++) {
                                sb.append(i);
                            }
                            lists.add(sb.toString());
                            System.out.println(sb);
                            System.out.println("buy ok!");
                            System.out.println("当前库里存在的票有:"+lists.toString());
                        }else {}
                    }
                }else {
                    System.out.println("票已售罄!");
                }
            }else {
                System.out.println("请输入正确的起点、终点!");
            }
        }
    }
}
 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一列货运列车共有 n 节车厢,每节车厢将停放在不同的车站。假定 n 个车站的编号分别 为 1~n,车厢的编号与它们的目的地相同。货运列车按照从第 n 站至第 1 站的次序经过这 些车站。为了便于从列车上卸掉相应的车厢,必须重新列车厢,使各车厢从前至后按编号 1~n 的次序列。当所有的车厢按照这种次序列时,在每个车站只卸掉最后一节车厢 即可。可以在一个转轨站里完成车厢的重工作,在转轨站中有一个入轨,一个出轨和k 个缓冲铁轨(位于入轨和出轨之间)。 图 3-1 给出了一个转轨站, 其中有 k=3 个缓冲铁轨 H1,H2 和 H3。开始时,n节车厢的货车从入轨处进入转轨站,车厢重结束时各车厢按照编号1至编号n的次序从出轨处离开转轨站。在图 3-1(a)中,n=9,车厢从后至前的初始次序为 5,8,1,7,4,2,9,6,3。图 3-1(b)给出按所要求的次序重新列后的结果。 为了重车厢,从前至后依次检查入轨上的所有车厢。如果正在检查的车厢就是下一个满足列的要求的车厢,可以直接把它放到出轨上。如果不是,则把它移动到缓冲铁轨上, 直到按输出次序要求轮到它时才将它放到出轨上。由于缓冲铁轨上车厢的进和出都是在其顶 部进行的,因此缓冲铁轨是按照 LIFO 的方式使用的。在重车厢过程中,仅允许以下移动:  车厢可以从入轨移动到一个缓冲铁轨的顶部或者出轨上;  车厢可以从一个缓冲铁轨的顶部移动到的出轨上;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值