网易互娱9.5初级游戏开发笔试题解--java

第一题:从自动售货机取饮料,算价格
测试用例:
5 3                    5代表有5个货物槽,3代表3个人
1 2 3 4 5            代表5个槽里每种饮料的价格
5                        第一个人操作5次
left take 1            left、right代表左右手,take、return、keep代表取、放回去、放包里,take、return 后面的数字代表从哪里取,放回哪里(注意放回的货物槽和取出的可能不一样,因此价格会变)
right take 2
left return 3
right keep
right take 4
6
left take 5
right take 1
left return 2
right return 3
left take 5
left return 4
10
left take 1
left keep
left take 2
left keep
left take 3
left keep
left take 4
left keep
left take 5
left keep
/**
 * 网易互娱软开第一题:从自动售货机里取饮料
 * 不知道为啥scanner.next不能读取输入数据的最后一个字符串,随便往输入数据里加一个空格或者字符就能得到正确解了
 * 思路很简单,就是用一个二维数组memo来模拟自动售货机,每一列代表货物槽,第0行代表初始价格,当有新价格时往下一行添加即可
 * 取饮料时也将该行的价格变为0(如果不在第一行)
 * 再次求大佬解答一下为什么这里的scanner.next不能读取输入数据的最后一个字符串
 * 我在其他地方都可以啊,感觉可能是系统把最后一个字符串当做空白符了,所以没有读出来,请问大家有没有解决的方法
  * Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是  空白符;比如空格,回车,tab 等等。 * @author shkstart
 * @create 2020-09-05 17:15
 */
import java.util.Scanner;
public class Wangyi {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        while(in.hasNext()) {
            int n=in.nextInt();
            int nums=in.nextInt();
            int[] price=new int[n];

            for(int i=0;i<n;i++) {
                price[i]=in.nextInt();
            }
            int[][] memo=new int[100+1][n];
            for(int i=0;i<n;i++) {
                memo[0][i]=price[i];
            }



            for(int people=0;people<nums;people++) {
                int m=in.nextInt();
                int bag=0,left=0,right=0;


                for(int j=0;j<m;j++) {
                    String lr=in.next();
                    String op=in.next();

                    if(lr.equals("left")&&op.equals("take")) {
                        int coco=in.nextInt();
                        for(int i=0;i<100;i++) {
                            if(memo[i+1][coco-1]!=0) {
                                continue;
                            }else {
                                left=memo[i][coco-1];
                                if(i!=0) {
                                    memo[i][coco-1]=0;
                                }
                                break;

                            }
                        }

                    }
                    else if(lr.equals("right")&&op.equals("take")) {
                        int coco=in.nextInt();
                        for(int i=0;i<100;i++) {
                            if(memo[i+1][coco-1]!=0) {
                                continue;
                            }else {
                                right=memo[i][coco-1];
                                if(i!=0) {
                                    memo[i][coco-1]=0;
                                }
                                break;
                            }
                        }

                    }
                    else if(lr.equals("right")&&op.equals("keep")) {
                        bag+=right;
                        right=0;
                    }
                    else if(lr.equals("left")&&op.equals("keep")) {
                        bag+=left;
                        left=0;
                    }
                    else if(lr.equals("left")&&op.equals("return")) {
                        int k=0;
                        int loca=in.nextInt();
                        while(memo[k][loca-1]!=0){
                            k+=1;
                        }
                        memo[k][loca-1]=left;
                        left=0;
                    }
                    else if(lr.equals("right")&&op.equals("return")) {
                        int k=0;
                        int loca=in.nextInt();
                        while(memo[k][loca-1]!=0){
                            k+=1;
                        }
                        memo[k][loca-1]=right;
                        right=0;
                    }
                }
                bag=bag+left+right;
                System.out.println(bag);
            }

        }
    }
}

第二题有人想做的话,欢迎留言,我会发出来。

#笔试题目##网易互娱#
全部评论

相关推荐

1 2 评论
分享
牛客网
牛客企业服务