導航:首頁 > 源碼編譯 > java電梯演算法

java電梯演算法

發布時間:2023-01-30 07:47:06

㈠ 怎麼用java實現apriori演算法

作者:何史提
鏈接:https://www.hu.com/question/22590018/answer/26646688
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

Apriori演算法的理念其實很簡單,可是實現起上來卻復雜無比,因為當中無可避免用Set和Hash Table等高階的數據結構,而且有很多loop用以讀取數據。
我不建議用Java,應改用Python或Scala一類的語言。如果用Python,代碼大概50行左右,但可以想像用Java便看起來復雜得多。看如下:

from operator import and_
from itertools import combinations

class AprioriAssociationRule:
def __init__(self, inputfile):
self.transactions = []
self.itemSet = set([])
inf = open(inputfile, 'rb')
for line in inf.readlines():
elements = set(filter(lambda entry: len(entry)>0, line.strip().split(',')))
if len(elements)>0:
self.transactions.append(elements)
for element in elements:
self.itemSet.add(element)
inf.close()
self.toRetItems = {}
self.associationRules = []

def getSupport(self, itemcomb):
if type(itemcomb) != frozenset:
itemcomb = frozenset([itemcomb])
within_transaction = lambda transaction: rece(and_, [(item in transaction) for item in itemcomb])
count = len(filter(within_transaction, self.transactions))
return float(count)/float(len(self.transactions))

def runApriori(self, minSupport=0.15, minConfidence=0.6):
itemCombSupports = filter(lambda freqpair: freqpair[1]>=minSupport,
map(lambda item: (frozenset([item]), self.getSupport(item)), self.itemSet))
currentLset = set(map(lambda freqpair: freqpair[0], itemCombSupports))
k = 2
while len(currentLset)>0:
currentCset = set([i.union(j) for i in currentLset for j in currentLset if len(i.union(j))==k])
currentItemCombSupports = filter(lambda freqpair: freqpair[1]>=minSupport,
map(lambda item: (item, self.getSupport(item)), currentCset))
currentLset = set(map(lambda freqpair: freqpair[0], currentItemCombSupports))
itemCombSupports.extend(currentItemCombSupports)
k += 1
for key, supportVal in itemCombSupports:
self.toRetItems[key] = supportVal
self.calculateAssociationRules(minConfidence=minConfidence)

def calculateAssociationRules(self, minConfidence=0.6):
for key in self.toRetItems:
subsets = [frozenset(item) for k in range(1, len(key)) for item in combinations(key, k)]
for subset in subsets:
confidence = self.toRetItems[key] / self.toRetItems[subset]
if confidence > minConfidence:
self.associationRules.append([subset, key-subset, confidence])

㈡ 演算法設計 爬樓梯類型,共n階樓梯,一次最多爬m階,用JAVA或者C或者C++

循環,,,,,好多循環,,,,哇,,,,實現了
#include<string.h>
#include<iostream>
#include<stack>
using namespace std;

int main()
{
int n = 0, m = 0, sum = 0, cnt = 0;

cout << "輸入階梯數:" << endl;
cin >> n;
cout << "輸入最多爬的階梯數:" << endl;
cin >> m;

if (n <= 0)
{
cout << "就一種,上去了!" << endl;
}
if (m <= 0)
{
cout << "你想上是不可能的!" << endl;
}
int i;
stack<int> sk;

do
{

if (sum <= n)
{
++cnt;

while (sum <= n)
{
sk.push(1);
++sum;
}
}

if (!sk.empty())
{
sum -= sk.top();
sk.pop();
}
else
{
cout << cnt << endl;
return 0;
}
HHH:
if (!sk.empty())
{
i = sk.top();
}
else
{
cout << cnt << endl;
return 0;
}

if (i < m)
{
++i;
}
else
{
if (!sk.empty())
{
sum -= sk.top();
sk.pop();
goto HHH;
}
else
{
cout << cnt << endl;
return 0;
}

}
if (!sk.empty())
{
sum -= sk.top();
sk.pop();
}
else
{
cout << cnt << endl;

return 0;
}
sk.push(i);
sum += i;

} while (1);

return 0;
}

㈢ 用Java編寫程序,設計一個模擬電梯運行的類

最佳答案代碼如下:

public class ElevatorModel implenent ElevatorModelListener{
ElevatorShaft elevatorShaft;//電梯車箱
Floor firstFloor;
Floor secondFloor;

public void addPerson(Person person);
//實現ElevatorModelListener介面的所有方法

}

public abstract class Location{
String locationName;//可能占據的三個位置firstFloor; secondFloor;elevator中的其中一個位置。

public Button getButton();
public Door getDoor();
}

public class Floor extends Location{
public Floor(String firstFloor,String secondFloor);

public Button getButton();//具體實現
public Door getDoor();//具體實現
public ElevatorShaft getElevatorShaft();
}

public class Door implenent ElevatorMoveListener{
boolean open;//門是開的關的
public void openDoor();//開門
public viod clossDoor();//關門
}

public class Button implenent ElevatorMoveListener{
boolean pressed;
public void pressButton();//按下按鈕
public void resetButton();//釋放按鈕
public void elevatorArrived();//電梯到來
}

public class ElevatorShaft{//電梯乘箱
Elevator elevator;//電梯
Button firstFloorButton,secondFloorButton;//出發層的按鈕和到達層的按鈕 Door firstFloorDoor,secondFloorDoor;//出發的門和到達的門
Light firstFloorLight,secondFloorLight;//燈

//監聽器
DoorListener doorListener;
ButtonListener buttonListener;
LightListener ligthListener;
BellListener bellListener;
ElevatorMoveListener elevatorMoveListener;
Set set;
}

public class Light implenent ElevatorMoveListener{
boolean lightOn;//代表燈的狀態,亮或滅
public void turnOnLight();
public void turnOffLight();

public void elevatorDeparted();//具體實現
public void elevatorArrived();//具體實現
}

public class Bell implenent ElevatorMoveListener{
public void ringBell();
public void elevatorDeparted();//具體實現
public void elevatorArrived();//具體實現
}

public class Elevator extends Location implenets
ButtonListener,DoorListener,BellListener,Runable
{//電梯乘箱
boolean moving;
boolean summoned;//描述Elevator是在移動還是已經補召喚
Floor currentFloor;//當前正在提供服務的Floor
Floor destinationFloor ; //代表將要到達的Floor
Button elevatorButton;
Door elevatorDoor;
Bell bell;

public void run();// 實現
public void requestElevator();//請求Elevator並產生排隊請求。 }

public class Person extends Thread{
Location類對象(或是位於Floor上,或是出處在Elevator中); int ID;
boolean moving;

public void run();//具體實現
public void enterAndRideElevator();
}

㈣ 電梯的工作程序代碼用JAVA語言可以嗎可以的話速求!

java 肯定可以,首先要解決虛擬機,就是電梯程序當中要有虛擬機運行,然後在虛擬機的基礎上編寫java程序去執行。

但是一般直接和硬體交互 一般用PLC

㈤ java用遞歸演算法編寫求1~n的累加和

importjava.util.Scanner;
publicclassZhi2{
publicstaticvoidmain(String[]args){
intnumber=1;
intsum=0;
intn;
Scannerscanner=newScanner(System.in);
n=scanner.nextInt();
for(;number<=n;number++){
sum+=number;
}
System.out.println(+sum);
}
}

㈥ java模擬實現兩部電梯同時工作的高效演算法

1. 各電梯控制:
a. 實現一個方法,返回本電梯到請求樓層上、下的時間(或者簡單點的,層數);
b. 任務接受:接受用戶樓層上、下請求任務

2. 主控部分:
a. 當用戶按下上、下請求時,通過調用兩個電梯的上面所說的服務,進行比較決斷最優時間電梯;
b. 給最最優電梯發送任務;
3. 主控與各電梯控制之間的通訊可以通過多種方式實現;

㈦ java中遞歸演算法是什麼怎麼算的

一、遞歸演算法基本思路:

Java遞歸演算法是基於Java語言實現的遞歸演算法。遞歸演算法是一種直接或者間接調用自身函數或者方法的演算法。遞歸演算法實質是把問題分解成規模縮小的同類問題的子問題,然後遞歸調用方法表示問題的解。遞歸往往能給我們帶來非常簡潔非常直觀的代碼形式,從而使我們的編碼大大簡化,然而遞歸的思維確實跟我們的常規思維相逆的,通常都是從上而下的思維問題,而遞歸趨勢從下往上的進行思維。

二、遞歸演算法解決問題的特點:

【1】遞歸就是方法里調用自身。

【2】在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口。

【3】遞歸演算法代碼顯得很簡潔,但遞歸演算法解題的運行效率較低。所以不提倡用遞歸設計程序。

【4】在遞歸調用的過程中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等,所以一般不提倡用遞歸演算法設計程序。

【5】在做遞歸演算法的時候,一定把握出口,也就是做遞歸演算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。

三、代碼示例:

publicclassFactorial{

//thisisarecursivefunction

intfact(intn){

if(n==1)return1;

returnfact(n-1)*n;

}}
publicclassTestFactorial{publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

Factorialfactorial=newFactorial();

System.out.println("factorial(5)="+factorial.fact(5));

}
}

代碼執行流程圖如下:

此程序中n=5就是程序的出口。

閱讀全文

與java電梯演算法相關的資料

熱點內容
線切割編程系統怎麼繪畫 瀏覽:233
如何搭建雲伺服器異地容災 瀏覽:923
黃金拐點指標源碼 瀏覽:91
演算法導論第九章 瀏覽:276
鴿子為什麼生成伺服器沒反應 瀏覽:490
freebsdnginxphp 瀏覽:215
雜訊消除演算法 瀏覽:607
vue類似電腦文件夾展示 瀏覽:111
後備伺服器有什麼功效 瀏覽:268
連不上伺服器怎麼連 瀏覽:600
什麼構架的可以刷安卓系統 瀏覽:771
愛奇藝APP怎麼兌換CDK 瀏覽:994
程序員買4k顯示器還是2k顯示器 瀏覽:144
python多進程怎麼多窗口 瀏覽:818
電腦文件夾怎麼取消類別 瀏覽:47
cad拉線段命令 瀏覽:924
如何用電腦清理手機沒用的文件夾 瀏覽:100
儲存層次結構對程序員的意義 瀏覽:477
微信文件夾查看器 瀏覽:952
android視頻聊天開源 瀏覽:552