1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceElevator
{
/// <summary>
/// 楼层类,每个楼层有向上叫梯命令和向下叫梯命令
/// </summary>
publicclassFloor
{
Elevator elevator;
/// <summary>
/// 楼层号
/// </summary>
privateint_iFloorNo;
publicintIFloorNo
{
get{return_iFloorNo; }
set{ _iFloorNo = value; }
}
/// <summary>
/// 上行需求
/// </summary>
privatebool_boolUp =false;
/// <summary>
/// 下行需求
/// </summary>
privatebool_boolDown =false;
privatebool_boolStop =false;
publicboolBoolStop
{
get{return_boolStop; }
set{ _boolStop = value; }
}
#region 构造函数
publicFloor(intf,Elevator e)
{
_iFloorNo = f;
elevator = e;
}
publicFloor(intf)
{
_iFloorNo = f;
}
publicFloor()
{
}
#endregion
/// <summary>
/// 获取本层是否停靠,是否为命令层
/// </summary>
/// <returns>停靠true;过false;</returns>
publicboolGetStatus()
{
return_boolDown || _boolUp;
}
/// <summary>
/// 上行返回1;下行返回-1;本层为目的地返回0;
/// </summary>
/// <returns></returns>
publicintGetStatusFlag()
{
if(_boolDown)
{
return-1;
}
elseif(_boolUp)
{
return1;
}
elseif(_boolStop)
{
return0;
}
else
{
return-999;
}
}
/// <summary>
/// 上楼命令
/// </summary>
publicvoidCommandUp()
{
_boolUp =true;
elevator.GoToCommandFloor();
}
/// <summary>
/// 下楼命令
/// </summary>
publicvoidCommandDown()
{
_boolDown =true;
elevator.GoToCommandFloor();
}
/// <summary>
/// 楼层到达状态刷新
/// </summary>
publicvoidRefresh()
{
_boolUp =false;
_boolDown =false;
_boolStop =false;
}
/// <summary>
/// 楼层比较看楼层号
/// </summary>
/// <param name="floor"></param>
/// <returns></returns>
publicintCompare(Floor floor)
{
intresult = 1;
if(this._iFloorNo > floor._iFloorNo)
{
result = 1;
}
elseif(this._iFloorNo < floor._iFloorNo)
{
result = -1;
}
else
{
result = 0;
}
returnresult;
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
电梯算法,其实可以不用那么复杂,建立一个队列,然后就是一个电梯的方向,当队列有数时,电梯总会向一个方向上最近的移动,知道到达本次队列该方向上的最大值,然后改变方向(因为不是上就是下-_-),电梯楼层按钮感觉都没必要有上行下行之分了,反正都不是在那里控制的,只是叫电梯来这一层而已,就是把楼层号加入队列中
这是我个人看法,电梯算法在硬盘的读写中也有用到
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。