import java.util.ArrayList;
成都創新互聯公司是一家專注于成都網站設計、成都網站制作與策劃設計,涵江網站建設哪家好?成都創新互聯公司做網站,專注于網站建設10多年,網設計領域的專業建站公司;建站業務涵蓋:涵江等地區。涵江做網站價格咨詢:028-86922220
import java.util.List;
public class Question {
// 調度總站
class DiaoDuZhan{
private ListClient list;
public Client getClient(){ // 獲得客戶
if(list != null list.size() 0){
Client client = list.get(0);
list.remove(client);
return client;
}else{
return null;
}
}
public void addClient(Client client){
if(list == null){
list = new ArrayListClient();
}
list.add(client);
}
}
// 客戶
interface Client{
public void setService(Service service);
public Service getSerive();
}
// 服務
interface Service{
public void doService();
}
// 服務員
class waiter{
DiaoDuZhan diaoduzhan;
public DiaoDuZhan getDiaoduzhan() {
return diaoduzhan;
}
public void setDiaoduzhan(DiaoDuZhan diaoduzhan) {
this.diaoduzhan = diaoduzhan;
}
public void doNext(){
Client client = diaoduzhan.getClient();
if(client != null)
client.getSerive().doService();
}
}
}
多機調度問題的Java實現(貪心算法)
具體問題描述以及C/C++實現參見網址
[java]?view?plain?copy?print?
import?java.util.ArrayList;??
import?java.util.Collections;??
import?java.util.LinkedList;??
import?java.util.List;??
/**?
*?多機調度問題--貪心算法?
*?@author?Lican?
*?
*/??
public?class?JobMachine?{??
public?static?class?JobNode?implements?Comparable{??
int?id;//作業的標號??
int?time;//作業時間??
public?JobNode(int?id,int?time){??
this.id=id;??
this.time=time;??
}??
@Override??
public?int?compareTo(Object?x)?{//按時間從大到小排列??
int?times=((JobNode)x).time;??
if(timetimes)?return?-1;??
if(time==times)?return?0;??
return?1;??
}?????????
}??
public?static?class?MachineNode?implements?Comparable{??
int?id;//機器的標號??
int?avail;//機器空閑的時間(即機器做完某一項工作的時間)??
public?MachineNode(int?id,int?avail){??
this.id=id;??
this.avail=avail;??
}??
@Override??
public?int?compareTo(Object?o)?{//升序排序,LinkedList的first為最小的??
int?xs=((MachineNode)o).avail;??
if(availxs)?return?-1;??
if(avail==xs)?return?0;??
return?1;??
}??
}??
public?static?int?greedy(int[]?a?,int?m){??
int?n=a.length-1;//a的下標從1開始,所以n(作業的數目)=a.length-1??
int?sum=0;??
if(n=m){??
for(int?i=0;in;i++)??
sum+=a[i+1];??
System.out.println("為每個作業分別分配一臺機器");??
return?sum;??
}??
ListJobNode?d=new?ArrayListJobNode();//d保存所有的作業??
for(int?i=0;in;i++){//將所有的作業存入List中,每一項包含標號和時間??
JobNode?jb=new?JobNode(i+1,a[i+1]);??
d.add(jb);??
}??
Collections.sort(d);//對作業的List進行排序??
LinkedListMachineNode?h=new?LinkedListMachineNode();//h保存所有的機器??
for(int?i=1;i=m;i++){//將所有的機器存入LinkedList中??
MachineNode?x=new?MachineNode(i,0);//初始時,每臺機器的空閑時間(完成上一個作業的時間)都為0??
h.add(x);??
}??
int?test=h.size();??
for(int?i=0;in;i++){??
Collections.sort(h);??
MachineNode?x=h.peek();??
System.out.println("將機器"+x.id+"從"+x.avail+"到"+(x.avail+d.get(i).time)+"的時間段分配給作業"+d.get(i).id);??
x.avail+=d.get(i).time;??
sum=x.avail;??
}??
return?sum;??
}??
public?static?void?main(String[]?args)?{??
int[]?a={0,2,14,4,16,6,5,3};??
int?m=3;??
int?sum=greedy(a,m);??
System.out.println("總時間為:"+sum);??
}??
}??
/**?
運行結果:?
將機器1從0到16的時間段分配給作業4?
將機器2從0到14的時間段分配給作業2?
將機器3從0到6的時間段分配給作業5?
將機器3從6到11的時間段分配給作業6?
將機器3從11到15的時間段分配給作業3?
將機器2從14到17的時間段分配給作業7?
將機器3從15到17的時間段分配給作業1?
總時間為:17?
*/
public class CLSS_ch2 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i = 100; i++) {
if (i % 10 == 3)
continue;
sum += i;
}
System.out.println(sum);
}
}
計算機圖形技術組的成員在1993年開發出了 Lua。它被設計成為腳本語言,是一種不可獲取的過程式編程語言,以簡單而強大而聞名。
你先用C++寫,然后做成DLL。
再用java去調就好了。
一般java做底層控制和調用都會這么做。
就像io什么的,都是去調用C的代碼完成的
一般java調用c寫的dll代碼都比較方便。
c調用java的代碼幾乎不可能。
標題名稱:java實現調度算法代碼 java任務調度算法
當前網址:http://vcdvsql.cn/article48/hejsep.html
成都網站建設公司_創新互聯,為您提供標簽優化、網站改版、關鍵詞優化、網站設計公司、品牌網站設計、外貿建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯