首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为房间选择成人和儿童的有效组合

为房间选择成人和儿童的有效组合
EN

Stack Overflow用户
提问于 2013-09-05 10:45:00
回答 2查看 176关注 0票数 0

我的问题是

例如,

成人人数=4

儿童人数=3

有两个房间。

每个房间都有最小成人和最大成人限制,最小儿童和最大儿童限制。我需要在每个房间里有成人和儿童的有效组合,可能有几个有效的组合,但是一旦我得到一个有效的组合,我就完成了。

例如,

room1最小成人=2,最大成人=3 room1最小子=1,最大子=1 room2最小成人=1,最大成人=1 room2最小子=1,最大子=2

我已将成人人数分成以下组: 1: 4,01,32,2

我已将儿童人数分为2: 3,01,2组

一个有效的组合是3名成人和1名儿童在房间1和1成人和2名儿童在room2。

我需要用Java实现这一点。我不知道如何解决这个问题,使用什么数据结构和什么编程技术。

EN

回答 2

Stack Overflow用户

发布于 2013-09-05 11:00:53

首先,您可以创建一个类范围,允许您指定一个最小值和最大值。接下来,创建一个具有两个范围的类空间。接下来,创建一个具有两个属性的类RoomOccupation :成人nr和儿童nr。接下来,向Room类添加一个方法,生成包含所有允许的组合的集合。

接下来是棘手的部分:你循环两个房间的2组可能的职业,将每个职业的nr成人加到一个总数中,并将其与需要一个房间的人数相匹配。如果所有的总数都匹配=>宾果。棘手的部分是,这是很容易编程为2为循环,因为你有两个房间。如果您想要使您的程序独立于房间的数量,您必须消除这个双for循环,并使用递归。相反,您可以创建一个List>。递归方法将使用参数索引来循环这个list.get(索引)。如果索引== list.size-1和总计数匹配->宾果,否则以index+1作为参数递归调用该方法。

票数 1
EN

Stack Overflow用户

发布于 2013-09-05 10:54:31

代码语言:javascript
复制
public class Room{
public int roomNumber;
public int minAdults;
public int maxAdults;
public int minChildren;
public int maxChildren;
public int numAdultsInRoom;
public int numChildrenInRoom;

public Room(int number){
this.roomNumber = number;

switch (number){
case 1:
{
minAdults = 2;
maxAdults = 3;
minChildren = 1;
maxChildren = 1;

}//case1
break;

case 2:
{
minAdults = 1;
maxAdults = 1;
minChildren = 1;
maxChildren = 2;

}//case2
break;
}//switch

numAdultsInRoom = 0;
numChildrenInRoom = 0;
}//room

}//room class

获得新输入时

代码语言:javascript
复制
HashMap<Integer,Room> roomsMap = new HashMap<Integer,Room>();

roomsMap.put(1,new Room(1));
roomsMap.put(2,new Room(2));

进入房间内的人

代码语言:javascript
复制
if room is 1, and person is child
   if (maxchildren in room> children in room){
childrenInRoom++;
}

诸若此类

编辑时:房间r= roomsMap.get(roomNumber);编辑r,放回r

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18634227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档