拼多多笔试5.26
4道编程题,双机位
人麻了
1.n张卡片,每轮发一张卡片,每张卡片数值为ai,有一个正整数m,要求玩家凑齐1到m内所有正整数时,可用这m张卡片兑换一次奖励。现给出n张卡片和正整数m,问玩家可以在第几轮获得奖励,若一次奖励都没有则输出"Impossible"。有t组数据。
AC
思路:每轮存入ai时,同时判断长度为m的辅助数组内的每个值是否全大于0,若大于0说明本轮可以兑换奖励,将辅助数字所有元素--表示消耗掉了这m张卡片
麻烦点:输出格式,对于每一轮的结果需要占一行,本鼠忘了\n的用法,试了好好几次总算正确了
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int t = in.nextInt(); for(int i = 0;i<t;i++) { int cur = 0; int n = in.nextInt(); int m = in.nextInt(); int arr[] = new int[n]; int ar[] = new int[m]; for(int j = 0;j<n;j++) { arr[j] = in.nextInt(); if(arr[j]>0 && arr[j]<=m)ar[--arr[j]]++; int flag = 1; for(int k = 0;k<m;k++) { if(ar[k]== 0) { flag = 0; break; } } if(flag == 1) { cur = 1; for(int p = 0;p<m;p++) { ar[p]--; } int res = j+1; System.out.print(res+" "); } } if(cur == 1)System.out.print("\n"); else System.out.println("Impossible"); } } } }
2.长度n的01串,每次操作选择i表示会将除了位置i和位置i+1外的数字反转,若i为n,则表示除n外都反转。
问在进行m次操作后,使该01串表达的值最小,这个01串是什么。有t组数据。
...
3.n个正整数,可做若干个操作,每次操作选择任意一个数,使其++。
现有q次询问,在第i次询问,问最少要多少次操作(操作可以不做)使第k大的数=x。
若无论多少次操作都无法实现输出"Impossible"。每次询问都针对原始数组。第k大表示降序排序后排在第k个的那个数。
...
4.存储容量n,最多存n条数据。
写模块每次固定写入p条数据,当剩余不足p时,无法写。
读模块每次固定取出q条数据,并释放相应存储,当已有元素个数小于q时,无法读。
当剩余<p,已有<q时,显然死锁。
给定n,p,q,问是否会出现死锁。有t组数据。
...
欢迎大家讨论,感觉变换操作题比例很大,苦手呀
#我的实习求职记录#