笔试题(2021.7.25拼夕夕)
作者:互联网
笔试题
两道拼夕夕的笔试题,也是帮同学做的,那个扑克牌的题,出的奇奇怪怪的。。。
扑克牌开火车
题目描述
思路
刚开始我认为收走的牌还能出,所以就一直错
然后同学告诉我收走的牌不能出,然后能把示例过了,但是最后没来得及提交
思路就是模拟
两个人的牌用队列表示,放在桌子上的牌用栈表示
然后模拟这个过程,因为收走的牌不会再放下来,所以最后两个人手里的牌肯定都会为空。具体实现起来细节很多
可能代码有点啰嗦,但是大致是这个意思
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
Queue<Integer> queue1 = new LinkedList<>();
Queue<Integer> queue2 = new LinkedList<>();
for(int i = 0; i < N; i++){
queue1.offer(sc.nextInt());
}
for(int i = 0; i < N; i++){
queue2.offer(sc.nextInt());
}
Stack<Integer> stack = new Stack<>();
int count1 = 0;
int count2 = 0;
while(!queue1.isEmpty() || !queue2.isEmpty()) {
if(!queue1.isEmpty()){
int a = queue1.poll();
if (stack.indexOf(a) == -1) {
stack.push(a);
} else {
while (!stack.isEmpty() && stack.indexOf(a) != -1) {
count1++;
while (stack.peek() != a) {
stack.pop();
count1++;
}
stack.pop();
count1++;
if (queue1.isEmpty()) {
break;
}
a = queue1.poll();
stack.push(a);
}
}
}
if(!queue2.isEmpty()) {
int b = queue2.poll();
if (stack.indexOf(b) == -1) {
stack.push(b);
} else {
while (!stack.isEmpty() && stack.indexOf(b) != -1) {
count2++;
while (stack.peek() != b) {
stack.pop();
count2++;
}
stack.pop();
count2++;
if (queue2.isEmpty()) {
break;
}
b = queue2.poll();
stack.push(b);
}
}
}
}
while(!stack.isEmpty()){
int t = stack.pop();
if(t % 2 == 1){
count1++;
}else{
count2++;
}
}
System.out.println(count1);
System.out.println(count2);
}
}
无限数字集合
题目描述
思路
这个比较简单,需要注意b 和 c 为0的情况
不知道这样写会不会超时,因为看到数据范围挺大的
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int i = 0; i < T; i++){
long a = sc.nextInt();
long b = sc.nextInt();
long c = sc.nextInt();
long q = sc.nextInt();
if(b == 0 && c == 0){
if(q == a)
System.out.println(1);
else{
System.out.println(0);
}
continue;
}
if(b == 0 || c == 0){
long t = b == 0 ? c : b;
if((q - a) / t * t == (q - a))
System.out.println(1);
else{
System.out.println(0);
}
continue;
}
boolean flag = false;
long max = (q - a + b - 1) / b;
for(int j = 0; j <= max; j++){
if(q - a >= j * b && (q - a - j * b) / c * c == (q - a - j * b)) {
System.out.println(1);
flag = true;
break;
}
}
if(!flag)
System.out.println(0);
}
}
}
标签:25,2021.7,++,System,int,isEmpty,拼夕夕,sc,stack 来源: https://blog.csdn.net/windyjcy/article/details/119088314