带有限期的作业排序算法 java实现
/*
*日期:2010-04-19 22:02
*开发者:heroyan
*联系方式:zndxysf@126.com
*功能:带有限期的作业排序,假设每个作业都可在单位时间内完成,完成后获得一定的效益,求效益的最大值和作业顺序
*/
import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
public class JobSort{
private static int MAX = 100;
private Job[] jbs = new Job[MAX];
private boolean[] visited = new boolean[MAX];//标志此时间是否已经被安排作业
private int[] target = new int[MAX];//目标编号
private double maxfit = 0.0;//最大收益
private int n;//作业个数
public JobSort(){}
public static void main(String args[]){
JobSort sp = new JobSort();
sp.init();
sp.js();
sp.print();
}
//初始化
public void init(){
Scanner scan = new Scanner(System.in);
int p,q;
double w;
System.out.println("Input the job number:");
n = scan.nextInt();
System.out.println("Input the time and benifit:");
for(int i = 1; i <= n; ++i){
jbs[i] = new Job();
jbs[i].no = i;
jbs[i].tt = scan.nextInt();
jbs[i].fit = scan.nextDouble();
}
maxfit = 0.0;
Arrays.fill(visited,false);
sort();
}
//按效益从大到小排序
public void sort(){
for(int i = 1; i < n; ++i){
for(int j = i+1; j <= n; ++j ){
if(jbs[i].fit < jbs[j].fit){
Job tmp = jbs[i];
jbs[i] = jbs[j];
jbs[j] = tmp;
}
}
}
}
//算法主体
public void js(){
int cnt = 0;
for(int i = 1; i <= n; ++i ){
if(!visited[jbs[i].tt]){
visited[jbs[i].tt] = true;
target[cnt++] = jbs[i].no;
maxfit += jbs[i].fit;
}
}
target[cnt] = -1;
}
//打印结果
public void print(){
for(int i = 0; target[i] > 0; ++i){
System.out.println("NO."+target[i]+" job is choosed");
}
System.out.println("maximum fit is "+maxfit);
}
}
class Job
{
public int no;//序号
public int tt;//期限
public double fit;//效益
}
相关文档:
java连接常见数据库的连接字符串
1. MySQL(http://www.mysql.com)mm.mysql-2.0.2-bin.jar ;
Class.forName( "org.gjt.mm.mysql.Driver" );
cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd );
2. PostgreSQL(http://www.de.postgresql.org)pgjdbc2.jar ;
C ......
package com.color.program;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CompareTime {
public static void main(String[] args){
String t1 = "2008-05-09";
String t2 = "20 ......
一,线程的四个主要周期状态是“创建”,“可执行”,“非可执行”,“消亡”,状态转换关系如下图:
(1)创建。当实例化一个thread对象并执行start()方法后,线程进入“可执行”状态开始执行。虽然多线程给用户一种同时执行的假象,但事实上在同一时间点内,只有一个 ......
用Java写的图片浏览器
package com.wenbo.myprogrem.day16;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionLis ......