• (Java实现) HDOJ 1051 Wooden Sticks 贪心算法


    Problem Description

    (a)第一根木材的安装时间是1分钟

    (b)在处理完长度为l,宽度为w的木材后,若紧接着处理的木材长度l'>l且w'>w,则不需要安装时间,否则需1分钟安装时间

    (c)找出最短安装时间的序列对

    解决思路:

    1.根据木材数n创建对应的n个木材对象,初始化其长度和宽度

    2.将所有木材以长度升序排列(当长度相等时,宽度宽的排在后面)

    3.调整机器安装时间(time++),处理排列后方未被处理的长度更长,宽度更宽,即无需安装时间的木材,将该木材标志为已处理

    4.从木材1到木材n循环执行步骤3

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    
    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int a = in.nextInt();
    for(int i = 0; i < a; i++){
    int n = in.nextInt();   //木头数
    Wood[] woods = new Wood[n];
    for(int j = 0; j < n; j++){
    woods[j] = new Wood(in.nextInt(),in.nextInt());
    }
    Arrays.sort(woods);
    
    int time = 0;
    int nl,nw;
    for(int k = 0; k = nw && woods[j].judge == 0){
    nl = woods[j].l;
    nw = woods[j].w;
    woods[j].setJ();   
    }
    }
    }
    System.out.println(time);
    
    }
    
    }
    
    
    }
    
    //木材类
    class Wood implements Comparable{
    int l;
    int w;
    int judge = 0;   //木材是否已被处理
    public Wood(int l,int w){
    this.l = l;
    this.w = w;
    }
    //将木材设置为已处理
    public void setJ(){
    this.judge = 1;
    }
    
    //重写比较方法
    @Override
    public int compareTo(Wood wood) {
    //考虑到长度相等的情况
    if(l == wood.l){
    return (w > wood.w)? 1:-1;
    }
    return (l > wood.l)? 1:-1;
    }
    
    }
  • 相关阅读:
    如何应对量化策略的失效
    OmniGraffle Pro v7.22.3(流程图UML图)
    35岁左右的项目经理,这5种能力一定要有​
    操作系统启动过程
    Unet语义分割-语义分割与实例分割概述-001
    RabbitMq优先级队列实现
    【SSM框架】Spring笔记 --- 事务详解
    语义分割模型------unet unet++
    Python编程 顺序执行与程序的主入口
    【web开发】11、文件的上传
  • 原文地址:https://blog.csdn.net/weixin_71792169/article/details/128145319