题目要求将n0个女生和n1个男生分配到n个寝室中,满足以下条件:

  1. 男女生不能混住;
  2. 不允许单人住一间寝室;
  3. 对每种性别的学生,每间寝室入住的人数都必须相同;
  4. 在有多种分配方案满足前面三项要求的情况下,要求两种性别每间寝室入住的人数差最小。

根据题目要求,我们可以得到以下几个结论:

  1. 对于男生寝室,每间寝室入住的人数应为n1/n;
  2. 对于女生寝室,每间寝室入住的人数应为n0/n;
  3. 如果n1/n和n0/n都是整数,说明可以满足前三项要求,同时人数差为0;
  4. 如果n1/n和n0/n都不是整数,那么只要满足前三项要求,人数差最小必然是1。

根据上述结论,我们可以编写如下程序来解决问题:

#include <iostream>
using namespace std;

int main() {
    int n0, n1, n;
    cin >> n0 >> n1 >> n;

    // 计算男生寝室每间寝室入住的人数
    int m1 = n1 / n;

    // 计算女生寝室每间寝室入住的人数
    int m0 = n0 / n;

    // 如果男生寝室或女生寝室每间寝室入住的人数不是整数,则无解
    if (n1 % n != 0 || n0 % n != 0) {
        cout << "No Solution" << endl;
    } else {
        cout << m0 << " " << m1 << endl;
    }

    return 0;
}

这样的时间复杂度是O(1)的,因为只进行了有限次的运算和比较

使用c++写程序:学校新建了宿舍楼共有 n 间寝室。等待分配的学生中有女生 n 0 位、男生 n 1 位。所有待分配的学生都必须分到一间寝室。所有的寝室都要分出去最后不能有寝室留空。现请你写程序完成寝室的自动分配。分配规则如下:男女生不能混住;不允许单人住一间寝室;对每种性别的学生每间寝室入住的人数都必须相同;例如不能出现一部分寝室住 2 位女生一部分寝室住 3 位女生的情况。但女生寝室都

原文地址: http://www.cveoy.top/t/topic/hQpQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录