Åú´¦ÀíϵͳµÄ×÷Òµµ÷¶Èjava ÁªÏµ¿Í·þ

·¢²¼Ê±¼ä : ÐÇÆÚÁù ÎÄÕÂÅú´¦ÀíϵͳµÄ×÷Òµµ÷¶Èjava¸üÐÂÍê±Ï¿ªÊ¼ÔĶÁ

ʵÑé Åú´¦ÀíϵͳµÄ×÷Òµµ÷¶È

Ò»¡¢ ʵÑéÄ¿µÄ

£¨1£© ¼ÓÉî¶Ô×÷Òµ¸ÅÄîµÄÀí½â£»

£¨2£© ÉîÈëÁ˽âÅú´¦ÀíϵͳÈçºÎ×éÖ¯×÷Òµ¡¢¹ÜÀí×÷ÒµºÍµ÷¶È×÷Òµ¡£ ¶þ¡¢ Ô¤±¸ÖªÊ¶ £¨1£© . Èý¡¢ ʵÑéÄÚÈÝ

±àд³ÌÐòÍê³ÉÅú´¦ÀíϵͳÖеÄ×÷Òµµ÷¶È£¬ÒªÇó²ÉÓÃÏìÓ¦±È¸ßÕßÓÅÏȵÄ×÷Òµµ÷¶ÈËã·¨¡£ÊµÑé¾ßÌå°üÀ¨£ºÊ×ÏÈÈ·¶¨×÷Òµ¿éµÄÄÚÈݺÍ×é³É·½Ê½£»È»ºóÍê³É×÷Òµµ÷¶È£»×îºó±àдÖ÷º¯Êý£¬¶ÔËù×ö¹¤×÷½øÐвâÊÔ¡£

import java.util.Scanner;

public class JCB {

public String name; //×÷ÒµÃû public int length; //×÷Òµ³¤¶È public int print; //´òÓ¡»úÊýÁ¿ public int tape; //´Å´ø»úÊýÁ¿ public int runTime; public int waitTime;

public int next; //Ö¸Õë }

class Action{

public final int n=10; //ºó±¸¶ÓÁÐÖÐJCBµÄ×î´óÊýÁ¿ JCB[] jTable=new JCB[n]; //×÷Òµ±í

public int jCount; //×÷Òµ±íÖе±Ç°×÷ÒµÊýÁ¿ public int head; //×÷Òµ±íÍ·Ö¸Õë

//³õʼ»¯º¯Êý

public void Init() {

head=-1; jCount=0; }

//Èë¶Óº¯Êý

public void pushQueue(JCB jcb){

if(jCount>=n) {

System.out.println(\¶ÓÁÐÒÑÂú£¡²»ÄÜÔÙ¼ÓÈ룡\); return ; }

if(head==-1) head=0;

// System.out.println(jTable[jCount]); jTable[jCount]=new JCB();

jTable[jCount].length=jcb.length; jTable[jCount].name=jcb.name; jTable[jCount].print=jcb.print; jTable[jCount].tape=jcb.tape;

jTable[jCount].runTime=jcb.runTime; jTable[jCount].waitTime=jcb.waitTime; jTable[jCount].next=-1; jCount++; }

//³ö¶Óº¯Êý

public void popQueue(int num) {

if(jCount==0) {

System.out.println(\¿ÕµÄ¶ÓÁУ¡²»Äܳö¶Ó£¡\); return ; }

if(num>=jCount) {

System.out.println(\¶ÓÁÐÖв»´æÔÚ¸ÃÔªËØ£¡\); return ; }

if(jCount==1)

{

head=-1;

jTable[0].next=-1; jCount=0; }else{

jTable[num-1].next=jTable[num].next; jTable[num].next=-1; jCount--; } }

public int memory=64*1024; //Ö÷´æ´óС64MB public int tape=4; //´Å´ø»úÊýÁ¿ public int print=2; //´òÓ¡»úÊýÁ¿

//×÷Òµµ÷¶Èº¯Êý

public void dispatch() {

int currJcb,maxJcb;

double currJcbRate,maxJcbRate;

while(head!=-1) {

currJcb=maxJcb=head;

currJcbRate=maxJcbRate=0;

//ÕÒ³öÏìÓ¦±È×î´óµÄ×÷Òµ while(true) {

//ÕÒ³öÂú×ã×ÊÔ´µÄ×÷Òµ

if(jTable[currJcb].length<=memory&&jTable[currJcb].tape<=tape&&jTable[currJcb].print<=print) {

//¼ÆËãÏìÓ¦±È

currJcbRate=(double)jTable[currJcb].waitTime/jTable[currJcb].runTime;

if(currJcbRate>maxJcbRate) {

maxJcbRate=currJcbRate; maxJcb=currJcb; } }

if(jTable[currJcb].next==-1)

{

break; }else{

currJcb=jTable[currJcb].next; } }

//Êä³öÏìÓ¦±È×î´óµÄ×÷Òµ¡¢·ÖÅä×ÊÔ´ if(maxJcbRate!=0) {

memory-=jTable[maxJcb].length; tape-=jTable[maxJcb].tape; tape-=jTable[maxJcb].print;

System.out.println(\Ñ¡ÖеÄ×÷ÒµµÄ×÷ÒµÃûΪ£º\+jTable[maxJcb].name);

popQueue(maxJcb); } } }

public static void main(String[] args) {

String name; int length; int print; int tape; int runTime; int waitTime;

int count; //¼Ç¼ÊäÈë×÷ÒµÊýÁ¿

JCB jcb =new JCB(); //ÁÙʱ×÷Òµ±äÁ¿

System.out.println(\ÇëÊäÈë×÷ÒµÏà¹ØÐÅÏ¢£¬ÒÔ×÷ÒµÃûΪQΪÊäÈë½áÊø¡£\\n\\n°´ÈÎÒâ¼ü½øÈëÊäÈëģʽ£º\);

Action action=new Action(); action.Init();

while(true) {

count=1;