老董~ 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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog