爱奇艺 校招9月15日 编程题第2道

import java.util.Scanner;

public class Main{  
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        // 第 1 行数据 
        int N = scan.nextInt(); // N种食物
        int M = scan.nextInt(); // M天后
        int P = scan.nextInt();  // 第P种食物

        Good[] goods = new Good[N];
        if(N<=0) {
            System.out.println("请输入一个正整数");// 非必要代码段
        }else {
            // 以下N行数据  第二行N个数Ai

            for(int i = 0;i<N;i++) {
                int Ai = scan.nextInt();

                goods[i] = new Good(Ai);
            }
        }  // 第一个if结束

        M_fun[] m_funs = new M_fun[M];
        if(M <=0) {
                System.out.println("请输入一个正整数");// 非必要代码段
        }else {
        // 以下m行数据           
            for(int i = 0;i<M;i++) {
                String aob = scan.next();
                int id = scan.nextInt();
                // 将吃喝买的操作保存在对象中
                m_funs[i] = new M_fun(aob,id); 
            }
        }// 第2个if结束 

//      for(int i = 0;i<M;i++) { // 查看一下保存的操作是否正确
//          System.out.println("查看一下操作:"+m_funs[i].AorB +" "+ m_funs[i].good_id);
//      }

        scan.close(); // 此后无数据的输入,关闭输入流

        // 求p种食物的 剩余量  p-1为食物的id,即第几种食物
        // System.out.println("求第"+ P+"种食物");
        int res_id = P-1; 
        for(int i = 0;i<M;i++) { //所有的操作M次
//          System.out.println("I="+ i);
            if(m_funs[i].good_id == P) { // 判断是否为操作对象  如果操作的是所求的食物,才执行if后面的操作
//              System.out.println("m_funs[i].good_id"+ m_funs[i].good_id);
                String s = m_funs[i].AorB;
//              System.out.println("s="+ s);
                if(s.equals("A")) { // 如果是吃了
//                  System.out.println("chi");
                    goods[res_id].a--;         // 那么对应物品的数量减去1
                }else{// 如果是买操作
//                  System.out.println("mai");
                    goods[res_id].a++;
                }
                // System.out.println( m_funs[res_id].AorB+ " " + goods[res_id].a);
            }
        }

        System.out.println(goods[res_id].a);

    } // public static void main(String[] args) -end    
} // public class Main  -end

class Good{
    int a;  
    Good(){ // 非必要代码段
        System.out.println("无参数,创建失败");     
    }
    Good(int a){
        this.a = a; 
    }
}
class M_fun{ //用来保存操作的类
    String AorB;
    int good_id;

    M_fun(String AorB,int good_id){
        this.AorB = AorB;
        this.good_id = good_id;
    }   
}

以上是爱奇艺编程题第2道,可惜当时没有写出来,时间不够了,这是交卷之后自己写出来的,虽部分逻辑是略显繁琐,但整体思路清晰,是可以实现的,用户继续努力,争取在考试规定的时间内完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值