题目:
某公司团建郊游,男女生一共有T个人,其中X个为男生, Y个为女生,再其中,有v对异性情侣,到宿营地后,开始分配帐篷。
帐蓬有三种,三人帐篷,普通双人帐篷和爱心帐篷。
注意,普通帐篷双人和三人帐蓬都只能住相同性别的人,而爱心帐篷可以住一对异性情侣。但是,普通帐篷和三人帐篷的实际入住人数量可以小于其上限,而爱心帐篷则不行。
帐蓬价格:三人帐篷p1元/顶,普通双人帐蓬p2元/顶,爱心帐篷p3元/顶

要求总价最少即可。注:三人帐篷不一定比两人帐篷便宜。情侣可以拆开睡。

#include<iostream>
#include<vector>
using namespace std;int main()
{int p1, p2, p3;int x, y, v;cout << "输入男生人数:";cin >> x;cout << "输入女生人数:";cin >> y;cout << "输入情侣人数:";cin >> v;cout << "输入三人帐篷的单价:";cin >> p1;cout << "输入普通两人帐篷的单价:";cin >> p2;cout << "输入爱心帐篷的单价:";cin >> p3;//定义两个数组分别存男生的方案和女生的方案int arr1[100][3], arr2[100][3];int cnt1 = 0, cnt2 = 0;int men = x, women = y;//根据情侣的数量来枚举所有的情况 for (int i = 0; i <= v; i++){//减去混合的男女方便分类//每次要重新赋值,在循环中x y 数量会变x = men;y = women;//减去情侣的数量x -= i;y -= i;//男生三人帐篷int m1, m2;//考虑取余的情况,住不满if (x % 3 == 0) m1 = x / 3; else m1 = x / 3 + 1;//同样的问题 ,每次数量都会变int tmp = x;//枚举双人帐篷的数量for (int j = 0; j <= m1; j++){x = tmp;//减去住三人帐篷的人x -= j * 3;//剩下的都是猪双人帐篷的,同样考虑住不满取余的情况if (x % 2 == 0) m2 = x / 2; else m2 = x / 2 + 1;//如果男的数量在减去三人帐篷的数量乘3的小于0的话,说明存在三人帐篷住不满的情况,这样就没有人住双人帐篷了if (x < 0) m2 = 0;//将结果存在数组里面arr1[cnt1][0] = j; arr1[cnt1][1] = m2; arr1[cnt1][2] = i;cnt1++;}//女生同理int w1, w2;if (y % 3 == 0) w1 = y / 3; else w1 = y / 3 + 1;tmp = y;for (int j = 0; j <= w1; j++){y = tmp;y -= j * 3;if (y % 2 == 0) w2 = y / 2; else w2 = y / 2 + 1;if (y < 0) w2 = 0;arr2[cnt2][0] = j; arr2[cnt2][1] = w2; arr2[cnt2][2] = i;cnt2++;}}int price = 1000000, a=0, b=0, c=0;//加入 能让男生住满的方案m种, 女生n种,总的条件一个有 m * n种 for (int i = 0; i < cnt1; i++){for (int j = 0; j < cnt2; j++){//但是应该注意一个条件 男女生两种方案中的情侣帐篷数量应该相等 才符合要求if (arr1[i][2] == arr2[j][2]){int temp = (arr1[i][0] + arr2[j][0]) * p1 + (arr1[i][1] + arr2[j][1]) * p2 + arr1[i][2] * p3;// 打印出所有的搭配// cout << "三人:" << arr1[i][0] + arr2[j][0] << " 双人:" << arr1[i][1] + arr2[j][1] << " 爱心:" << arr1[i][2]<<  " 价格:" << temp << endl;;//每次都和之前的价格比较// price = min(price, temp);if (temp < price){price = temp;a = arr1[i][0] + arr2[j][0]; b = arr1[i][1] + arr2[j][1]; c = arr1[i][2];}}}}cout << "三人:" << a << " 双人:" << b << " 爱心:" << c << " 价格:" << price << endl;return 0;
}

算法第一次作业(2.帐篷问题)相关推荐

  1. 国科大学习资料--人工智能原理与算法-第一次作业解析(学长整理)

    国科大学习资料–人工智能原理与算法-第一次作业解析(张文生老师主讲)(1.3.1.7.1.9.1.14.1.15) 1.3 反射行动(比如从热炉子上缩回你的手)是理性的吗?它们是智能的吗? 答:反射行 ...

  2. DataWhale基础算法第一次作业---线性回归

    目录 1.线性回归损失函数的极大似然推导:西瓜书公式3.4除了用最小二乘法以外,怎么用极大似然推得? 2:一元线性回归的参数求解公式推导:西瓜书公式3.7和3.8怎么推来的? 公式3.7,3.8推导: ...

  3. 2021年人工神经网络第一次作业:参考答案-1

    简 介: 本文给出了 2021年人工神经网络第一次作业要求 中,由同学提交的作业示例. 关键词: 人工神经网络,感知机,BP,数据压缩 #mermaid-svg-mAbRor9AKp6fkRrk {f ...

  4. 2021年人工神经网络第一次作业要求

    ## ◎ 参考答案: 2021年人工神经网络第一次作业:参考答案-1 §01 第一题 1.1 使用感知机求解下面的分类问题. ▲ 图1.1 1.1.1 题目要求 绘制出网络结构,并给出算法流程描述: ...

  5. 2020人工神经网络第一次作业-参考答案第十部分

    本文是 2020人工神经网络第一次作业 的参考答案第十部分 ➤第十题参考答案-第1小题 1.题目分析 (1)数据集分析 数据集合包括有两个目录:test, train.其中分别包括有95,510张车牌 ...

  6. 2020人工神经网络第一次作业-参考答案第九部分

    本文是 2020人工神经网络第一次作业 的参考答案第九部分 ➤09 第九题参考答案 1.数据整理 根据char7data.txt中的文件将训练样本(21个字符)以及对应的输出值转化到两个矩阵:char ...

  7. 2020人工神经网络第一次作业-参考答案第五部分

    本文是 2020人工神经网络第一次作业 的参考答案第五部分 ➤05 第五题参考答案 1.题目分析 MATLAB中的Peaks函数是一个二元函数,构造BP网络来逼近该函数,网络的输入节点数量为2,输出节 ...

  8. 2020人工神经网络第一次作业-参考答案第三部分

    本文是 2020人工神经网络第一次作业 的参考答案第三部分 ➤03 第三题参考答案 1.构造BP网络进行函数逼近 (1) 逼近简单函数 构建单隐层的神经网络,隐层节点个数20,传递函数为sigmoid ...

  9. 2020人工神经网络第一次作业-参考答案第二部分

    本文是 2020人工神经网络第一次作业 的参考答案第二部分 ➤02 第二题答案参考 1.问题描述 原题要求设计一个神经网络对于下面图中的3类模式进行分类.期望输出分别使用: (1,−1,−1)T,(− ...

最新文章

  1. grafana官方使用文档_可视化监控展示工具之Grafana,安装部署和使用
  2. Windows Server 2012 HyperV之SMB共享实时迁移
  3. 2021-04-24 人工智能必读书单 Python
  4. java中迭代方式_JAVA中LIST迭代的方式汇总
  5. python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...
  6. Serializable中的serialVersionUID
  7. 常见数据平台架构有哪些
  8. 论PRINCE2认证的优势是什么?
  9. 阵列卡直通模式和raid模式_服务器通过RAID也可以在线扩容?学会这些,你也可以...
  10. 《无价》书中的精髓:商家是如何让消费者心甘情愿地多付钱的?消费者怎样才能识破商家的套路?
  11. Springcloud微服务中多模块重复代码重构成公共模块的实现
  12. 移动机器人下位机软件
  13. 自适应Huffman编码
  14. Java操作XML的工具:JAXB
  15. FTP主动模式和被动模式图解
  16. 【C++】进阶版--继承
  17. 著名小提琴老师林耀基老师去世
  18. 利用Python对文件夹下的TXT文件批量改名、改内容操作
  19. iperf java_网络性能测试工具Iperf/Jperf解读
  20. 简单的gif动画制作软件 avi格式怎么转换成gif

热门文章

  1. MAC OS苹果系统密码破解方法
  2. TypeError: Object of type 'datetime' is not JSON serializable
  3. Dojo 1.6 官方教程:Dojo中的事件
  4. 我记得你往日的样子----聂鲁达
  5. 腾讯广告终于迎来全面整合
  6. node 多版本管理 nvm-window(适用win7 win10)
  7. 吐血推荐珍藏的 Chrome 插件二
  8. 文樾杰出五金交电进销存管理系统 v6.12 下载
  9. 一款非常经典的蓝牙多媒体芯片​RDA5850
  10. mesothelioma-弥漫性间皮瘤