老董~ 2016-09-15 10:17 采纳率: 0%
浏览 1000

关于酒店分房的C++实现问题

问题描述:
有个表格,每一行是一张订单,关键的2个信息是 人数和房间数,比如:
人数 7 房间数 3。 现在需要将每个人数和房间数都>1的单子进行分拆,
比如人数 7 房间数 3 分拆为 3个单子:

分别是

订单1:人数 2 房间数 1;
订单2:人数 2 房间数 1;
订单3:人数 3 房间数 1;

又比如比如人数 7 房间数 4 分拆为4个单子:
分别是

订单1:人数 2 房间数 1;
订单2:人数 2 房间数 1;
订单3:人数 2 房间数 1;
订单4:人数 1 房间数 1;

因此问题是:给定人数和房间数,算法如何设计能得到各房间的人数?ps:一般一间房间 人数在[1,3]之间。
类似的,还有另一类订单 是送餐券
可能的一种情况是 人数4,餐券数7 ---和酒店分房正好相反,应该分成4张订单。

目前我自己设计的算法是先判断
1 判断 人数>=服务数?
1.1 若是,子订单数=服务数,
2 再判断 人数%服务数==0?
2.1 若是,各子订单人数=人数/服务数
2.2 若不是, 判断 服务数x2-人数==1或-1;以此判断各子订单人数是 2+1型还是2+3型;
1.2 否则子订单数=人数
重复类似2.1 2.2的判断

但是我总觉得我设计的有点复杂,应该有更简单的解决办法吧。。。

  • 写回答

2条回答

  • himiky 2016-09-15 12:56
    关注

    创建对象函数,可以用数组

    评论

报告相同问题?

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀