安排座位 java_java座位预定问题,有没有大神

你的程序会从字符串数组(称之为“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程序(并不用修复最后所说的可能被拆分的问题)

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值