Public class dynamicassign {
Public static void main (string [] ARGs ){
Area [] area = new area [5];
Area [0] = new area (0, 20 );
Area [1] = new area (1, 30 );
Area [2] = new area (2, 40 );
Area [3] = new area (3, 50 );
Area [4] = new area (4,150 );
Memory [] memory = new memory [4];
Memory [0] = new memory (0,100 );
Memory [1] = new memory (1, 30 );
Memory [2] = new memory (2, 50 );
Memory [3] = new memory (3, 40 );
Firstadapt (memory, area );
Bestadapt (memory, area );
Badadapt (memory, area );
}
// First adapt to the algorithm
Public static void firstadapt (memory [] memory, area [] area ){
Int K;
For (INT I = 0; I <memory. length; I ++ ){
K = area. length;
For (Int J = 0; j <area. length; j ++ ){
If (memory [I]. getvalue () <= (area [J]. getvalue ())){
Area [J]. setvalue (area [J]. getvalue ()-memory [I]. getvalue ());
System. Out. println (memory [I] + "--->" + area [J]);
Break;
} Else
K --;
If (k <1 ){
System. Out. println (memory [I] + "failed! ");
}
}
}
}
// Optimal adaptive algorithm
Public static void bestadapt (memory [] memory, area [] area ){
Int I, J;
For (I = 0; I <memory. length; I ++ ){
Boolean flag = true;
Int min = 0;
For (j = 0; j <area. length; j ++ ){
If (FLAG ){
If (memory [I]. getvalue () <= area [J]. getvalue ()){
Min = area [J]. getvalue ();
Flag = false;
}
} Else if (memory [I]. getvalue () <= area [J]. getvalue ())
& (Min> = area [J]. getvalue ())){
Min = area [J]. getvalue ();
}
}
If (min = 0 ){
System. Out. println (memory [I] + "failed! ");
} Else {
For (j = 0; j <area. length; j ++ ){
If (area [J]. getvalue () = min ){
System. Out. println (memory [I] + "--->" + area [J]);
Area [J]. setvalue (min-memory [I]. getvalue ());
Break;
}
}
}
}
}
// The worst Adaptive Algorithm
Public static void badadapt (memory [] memory, area [] area ){
Int I, J;
For (I = 0; I <memory. length; I ++ ){
Boolean flag = true;
Int max = 0;
For (j = 0; j <area. length; j ++ ){
If (FLAG ){
If (memory [I]. getvalue () <= area [J]. getvalue ()){
Max = area [J]. getvalue ();
Flag = false;
}
} Else if (memory [I]. getvalue () <= area [J]. getvalue ())
& (Max <= area [J]. getvalue ())){
Max = area [J]. getvalue ();
}
}
If (max = 0 ){
System. Out. println (memory [I] + "failed! ");
} Else {
For (j = 0; j <area. length; j ++ ){
If (area [J]. getvalue () = max ){
System. Out. println (memory [I] + "--->" + area [J]);
Area [J]. setvalue (max-memory [I]. getvalue ());
Break;
}
}
}
}
}
}
// Define a memory job Area
Class area {
Private int ID;
Private int value;
Public int GETID (){
Return ID;
}
Public void setid (int id ){
This. ID = ID;
}
Public int getvalue (){
Return value;
}
Public void setvalue (INT value ){
This. value = value;
}
Area (int id ){
This. ID = ID;
}
Area (int id, int value ){
This. ID = ID;
This. value = value;
}
Public String tostring (){
Return "Area:" + ID;
}
}
// Define a memory job
Class memory {
Area [] area = new area [5];
Memory [] memory = new memory [4];
Private int ID;
Private int value;
Public int GETID (){
Return ID;
}
Public void setid (int id ){
This. ID = ID;
}
Public int getvalue (){
Return value;
}
Public void setvalue (INT value ){
This. value = value;
}
Memory (int id ){
This. ID = ID;
}
Memory (int id, int value ){
This. ID = ID;
This. value = value;
}
Public String tostring (){
Return "memory:" + ID;
}
}