首页 > 编程语言 >JAVA L2-041 插松枝

JAVA L2-041 插松枝

时间:2024-04-10 19:30:48浏览次数:31  
标签:deque JAVA 插松枝 iterator int hezi System L2 songzhi

【22年真题】这是一道并不完美的题解,还有很多纰漏

但已经是我的极限了...

记录一下

import java.io.StreamTokenizer;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class Main{
	public static void main(String[] args)throws IOException {
		Read r = new Read();
		int N = r.NextInt();
		Deque<Integer> deque_tuisongqi = new ArrayDeque<Integer>(N);
		int M = r.NextInt();
		Deque<Integer> deque_hezi = new ArrayDeque<Integer>(M);
		int K = r.NextInt();
		Deque<Integer> deque_songzhi = new ArrayDeque<Integer>(M);
		for (int i = 0; i < N; i++) {
			int a = r.NextInt();
			deque_tuisongqi.addLast(a);
		}
		while(!deque_tuisongqi.isEmpty() || !deque_hezi.isEmpty()) {
			if(!deque_tuisongqi.isEmpty() && deque_songzhi.size()==0) {
				if(!deque_hezi.isEmpty()) {
					int a = deque_hezi.getFirst(); 
					deque_songzhi.addFirst(a);
					deque_hezi.removeFirst();
				}else {
					int a = deque_tuisongqi.getFirst();
					deque_songzhi.addFirst(a);
					deque_tuisongqi.removeFirst();
				}
				continue;
			}
			
			if(deque_tuisongqi.getFirst()>deque_songzhi.getFirst()){
				deque_hezi.addFirst(deque_tuisongqi.getFirst());
				deque_tuisongqi.removeFirst();
			}
			else if(!deque_hezi.isEmpty() && deque_hezi.getFirst()<=deque_songzhi.getFirst()) {
				deque_songzhi.add(deque_hezi.getFirst());
				deque_songzhi.removeFirst();
				deque_hezi.removeFirst();
			}
			else if(deque_tuisongqi.getFirst()<=deque_songzhi.getFirst()) {
				deque_songzhi.addFirst(deque_tuisongqi.getFirst());
				deque_tuisongqi.removeFirst();
			}
			//手中的松枝干上已经插满了松针,将之放到成品篮里,开始下一根松枝的制作。
			if(deque_songzhi.size()==K) {
				Iterator<Integer> iterator = deque_songzhi.descendingIterator();
				while (iterator.hasNext()) {
		            int num = iterator.next();
		            System.out.print(num);
		            if (iterator.hasNext()) {
		                System.out.print(" ");
		            }
		        }
				System.out.println();
				deque_songzhi.clear();
			}
			//小盒子中最上面的松针不满足要求,但推送器上已经没有松针了。此时将手中的松枝放到成品篮里,开始下一根松枝的制作。
			else if(!deque_hezi.isEmpty() && deque_hezi.getFirst()>deque_songzhi.getFirst() && deque_tuisongqi.size()==0){
				Iterator<Integer> iterator = deque_songzhi.descendingIterator();
				while (iterator.hasNext()) {
		            int num = iterator.next();
		            System.out.print(num);
		            if (iterator.hasNext()) {
		                System.out.print(" ");
		            }
		        }
				System.out.println();
				deque_songzhi.clear();
			}
			//小盒子已经满了,但推送器上取到的松针仍然不满足要求。此时将手中的松枝放到成品篮里,推送器上取到的松针压回推送器,开始下一根松枝的制作。
			else if(deque_hezi.size()==M && deque_tuisongqi.getFirst()>deque_songzhi.getFirst()) {
				for (int i = 0; i < M; i++) {
					deque_tuisongqi.addFirst(deque_hezi.getLast());
					deque_hezi.removeLast();
				}
				Iterator<Integer> iterator = deque_songzhi.descendingIterator();
				while (iterator.hasNext()) {
		            int num = iterator.next();
		            System.out.print(num);
		            if (iterator.hasNext()) {
		                System.out.print(" ");
		            }
		        }
				System.out.println();
				deque_songzhi.clear();
				deque_hezi.clear();
			}
			//双空
			else if(deque_hezi.isEmpty() && deque_tuisongqi.isEmpty()) {
				Iterator<Integer> iterator = deque_songzhi.descendingIterator();
				while (iterator.hasNext()) {
		            int num = iterator.next();
		            System.out.print(num);
		            if (iterator.hasNext()) {
		                System.out.print(" ");
		            }
		        }
				System.out.println();
				deque_songzhi.clear();
			}
			continue;
		}
	}
}
class Read{
	StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	public int NextInt()throws IOException {
		st.nextToken();
		return (int)st.nval;
	}
}

标签:deque,JAVA,插松枝,iterator,int,hezi,System,L2,songzhi
From: https://blog.csdn.net/Yoonaling520/article/details/137565859

相关文章

  • Java8 Stream API全面解析——高效流式编程的秘诀
    文章目录什么是StreamApi?快速入门流的操作创建流中间操作filter过滤map数据转换flatMap合并流distinct去重sorted排序limit限流skip跳过peek操作终结操作forEach遍历forEachOrdered有序遍历count统计数量min最小值max最大值reduce聚合collect收集anyM......
  • java基础语法(16)| 集合
    前言Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~1.集合概述什么是集合集合:集合是java中提供的一种容器,可以用来存储多个数据,并且可以存储任意类型......
  • Java基础语法(14)| Object类、String类
    1.Object类Object类概述 java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类,那么默认则继承自Object类。例如:publicclassMyClass{ }publicclas......
  • JavaScript 中的深度学习
    JS-PyTorch是一个JavaScript库,从头开始构建,以紧密跟随PyTorch的语法。它以一种文档完备、单元测试和可解释的方式实现,因此可以帮助其他JavaScript学习者进入机器学习!欢迎尝试Web演示!(本文视频讲解:java567.com)1.简介src/tensor.ts包含一个完全功能的张量(Tensor)对象,可以......
  • Java登陆第四十二天——Axios拦截器
    如果想在axios发送HTTP请求之前。或者是接收响应之前做一些额外的工作,可以通过拦截器完成。Axios拦截器分为请求拦截器,响应拦截器。分别在请求或响应时生效。一图了解Axios拦截器提供了两种文本函数:名字太长,直接看语法语法格式如下://请求拦截器,f1对应请求发送成功函数,f2......
  • NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比
    NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]Text-to-SQL(或者Text2SQL),顾名思义就是把文本转化为SQL语言,更学术一点的定义是:把数据库领域下的自然语言(NaturalLanguage,NL)问题,转化为在关系型数据库中可以执行的......
  • java中实现Runnable接口
    在Java中,要实现Runnable接口,你需要创建一个类,并让这个类实现Runnable接口中的run方法。Runnable接口是一个只有一个抽象方法的函数式接口,该方法是run。以下是一个简单的例子,展示了如何实现Runnable接口:java//实现Runnable接口的类publicclassMyRunnableimplementsRunnabl......
  • WSL2-Ubuntu Pytorch深度学习开发环境搭建
    安装Linux发行版删除现有Linux发行版wsl-l-vwsl--unregisterUbuntu从MicrosoftStore安装Linux发行版设置用户名和密码安装CUDACUDA(ComputeUnifiedDeviceArchitecture)是由NVIDIA推出的并行计算平台和编程模型。CUDAToolkit是由NVIDIA提供的一套用于GPU开发......
  • java异常处理
    publicclassTestException{publicstaticvoidmain(String[]args){int[]arr={11,22,33};try{System.out.println(arr[5]);}catch(Exceptionex){}try{//saveAge(100);saveAge......
  • JavaScript实现文件大小转换、单位转换、toFixed、indexOf、substr、substring、B、KB
    constbytesToSize=(size)=>{if(size<0.1*1024){//小于0.1KB,则转化成Bsize=size.toFixed(2)+'B'}elseif(size<0.1*1024*1024){//小于0.1MB,则转化成KBsize=(size/1024).toFixed(2)+'KB'}else......