栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

挑战程序设计竞赛(算法和数据结构)——4.3队列习题的Java实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

挑战程序设计竞赛(算法和数据结构)——4.3队列习题的Java实现

题目:


基本思路:
将任务定义为一个包含名称和时间的Task类,定义一个Task类型的队列,并循环下列算法:
用时间sum_time来记录处理情况,只要队列不为空,就不断执行
当处理一个队头任务时,首先判断其任务时间是否小于等于0 ,是则出队,否则分为两种情况:
1.任务时间>最大处理时间,首先用temp记录该对象并出队,接着对temp的时间调整为原任务时间-最大处理时间,最后将该temp入队至队尾;sum_time+=100
2.任务时间<=最大处理时间,sum_time+=对象时间,并打印对象的名称和时间;队头出队。

代码如下:

import java.io.BufferedInputStream;
import java.util.linkedList;
import java.util.Queue;
import java.util.Scanner;

public class QueueMain {
    public static void main(String[] args) {
        //声明一个任务类
        class Task{
            String name;
            int time;
        }

        //定义一个Task类的队列
        Queue queue = new linkedList();

        Scanner cin = new Scanner(new BufferedInputStream(System.in));
        System.out.println("输入任务数:");
        int capacity = cin.nextInt();
        System.out.println("输入CPU最大处理时间:");
        int q = cin.nextInt();
        for(int i=0;i0){
            if(queue.element().time<=0){
                queue.poll();
            }
            else{
                if(queue.element().time>q){
                    Task temp = queue.element();
                    temp.time = queue.element().time-q;
                    queue.poll();
                    queue.offer(temp);
                    sum_time += q;
                }
//                2.任务时间<=最大处理时间,sum_time+=对象时间,并打印对象的名称和sum_time;队头出队。
                else if(queue.element().time<=q){
                    sum_time += queue.element().time;
                    System.out.println(queue.element().name + " " + sum_time);
                    queue.poll();
                }
            }
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/439303.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号