你的程序会从字符串数组(称之为“booking”array)处理数据。第一个数组元素将包含一个数字,表示飞机有多少座位。其余元素将包含乘客谁已预订的航班座位组的信息。该组的第一个元素...
你的程序会从字符串数组(称之为“booking” array)处理数据。第一个数组元素将包含一个数字,表示飞机有多少座位。其余元素将包含乘客谁已预订的航班座位组的信息。该组的第一个元素是一个数字,表示有多少人在一组。其余的元素被他们的名和姓识别个别乘客在该组中。例如:阵列包含以下10行:
(txt文件:要用于导入程序中(用input导入))
8
2
Nobbly, Greg
Nobbly, Jo-Anne
1
Lee, Sook
3
Lukas, Stephie
Lukas, Cambridge
Lukas, Ogden
(有8个座位,乘客的第一组有2人,第二组有1人,而第三组有3人。)
座位图表航班将被存储在一个字符串数组(称之为“seat” array),其大小等于在飞机上的座位数。数组中的每个位置对应于一个座位; array中的第一个元素是座椅1,第二元件是座椅2,等等 。所有的座位都是空的。乘客将通过把他们的名字在这个阵列就座。
程序将:
创建适当的大小的“seat”array(在“booking”array的第一个位置)。
处理字符串的“booking”array中的剩余项目。对于每个组的乘客程序将尝试安排座位如下:
1.首先,它会查看是否有足够的剩余座位在飞机上给一个组的每个人就坐; 如果不是,它会显示错误消息,并且不把席位分配给在组中的任何人。
2.其次,将经过“seat”array,以确定是否空座多到足以容纳整个组在一起(例如,如果该组的大小为3,它会检查是否有3个连续的空座位)。(如果在array任何位置中有至少一个这样的位置的块,随机分配这个组给这些块中的一个(随机选择一个在“seat”array的中元素)如果那个座位是空的,确定是否有足够的连续数组元素(座位数)也就是整个组要坐的空座位; 如果是的话,就坐这里。否则,随机尝试另一个座位,重复直到成功为止。(注意,这不是最有效的方法...))
(如果没有这样的块,随机分别分配每个乘客到一个别的座位(即将组分拆)。对于每一个乘客,随机挑选座位号,直到找到一个空座位。)
当座位已分配完成,print 出 “seat”array 来显示内容。同时显示已有乘客的座位和空座位,描写空座为“empty”。程序将输出的每一行的座位数,其中飞机上的第一座是 (seat 1)。
(请注意,使用上述算法,乘客从未动过一次自己的座位已被分配。由于的随机选择的座椅位置的结果,一个组可能被拆分。例如,上述采样数据,可能会导致下面的输出:
Seat 1: Lukas, Ogden
Seat 2: Lee, Sook
Seat 3: -empty-
Seat 4: Lukas, Stephie
Seat 5: Nobbly, Greg
Seat 6: Nobbly, Jo-Anne
Seat 7: -empty-
Seat 8: Lukas, Cambridge
因为座椅分配的前两组留下了没有空块的三个座位,在第三组的每个人每个不得不被分配一个随机座位。如果前两个组已经就位不同,第三组可能已经能够坐在一起。)
求大神用上面说的算法写出一个JAVA程序(并不用修复最后所说的可能被拆分的问题)
展开