当前位置: 首页 > news >正文

第七节摆平积木

小明很喜欢玩积木。一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。然而此时,他又想把这些积木堆变成高度相同的。但是他很懒,他想移动最少的积木块来实现这一目标,你能帮助他吗?

输入包含多组测试样例。每组测试样例包含一个正整数n,表示小明已经堆好的积木堆的个数。
接着下一行是n个正整数,表示每一个积木堆的高度h,每块积木高度为1。其中1<=n<=50,1<=h<=100。
测试数据保证积木总数能被积木堆数整除。
当n=0时,输入结束。

对于每一组数据,输出将积木堆变成相同高度需要移动的最少积木块的数量。
在每组输出结果的下面都输出一个空行。

这道题我们练习一下vector的遍历和访问操作。

好的,接下来有两部分,第一步我们需要算出积木的总数量。也就是弄清每一摞积木的数量,再将他们的总数相加,再把得到的结果除以n,就得到了在高度相等的情况下每一个积木的块数。

第二步,对于超过平均值的积木,计算当前积木数量和平均值的差值,把多出来的积木数量移到缺少的部分,直到积木高度相等。

当n为0时,输入结束,我们可以写出下面的基础代码。

#include<iostream>

using namespace std;

int main(){

int n;

while(cin>>n){

if(n==0) break;

}

}

接着可以创建一个可以包含n个元素的容器,容器的默认值为0。

vector<int>nums=vector<int>(n,0);

再求和算出总的积木个数然后再算出积木的平均值。

这里有一点比较难理解,题中叫我们求出最少移动的步骤。拿每一堆和平均值比较就可以了,比较的结果是多的很正常,那么要是比较的结果是少了,为什么要跳过呢?为什么不计入总的移动块数的计算?

你这么想,与平均值比较大的这部分拿出来,拿出来的这份不就是要填补到那些比较少的部分,那如果少的也记录的话,是不是就相当于我们计算所得是答案的2倍。而题目只是让我们求出需要移动的最小块数。所以只需比较比平均值大的部分就行。

所以,

for(int i=0;i<n;i++){

if((nums[i]-average)>0){

result+=(nums[i]-average);

}

}

最后输出result即可。

完整代码。

#include<iostream>

#include<vector>

using namespace std;

int main(){

int n;

while(cin>>n){

if(n==0)break;

vector<int>nums=vector<int>(n,0);

int sum=0;

for(int i=0;i<n;i++){
cin>>nums[i];

sum+=nums[i];

}

int average=sum/n;

int result=0;

for(int i=0;i<n;i++){

if((nums[i]-average)>0) result+=(nums[i]-average);

}

cout<<result<<endl;

cout<<endl;

}

}

http://www.jsqmd.com/news/931521/

相关文章:

  • java第一次博客作业:Java枚举类型
  • 三步轻松将网页小说转为EPUB电子书:WebToEpub完全使用指南
  • 2026 企业 AI 搜索优化服务商 TOP7 测评:从技术平台到本地落地怎么选 - 企业服务研究所
  • 【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (5)--- 异步处理
  • DLSS Swapper终极指南:5分钟轻松提升游戏性能的免费神器
  • 【Sora 2交互设计终极指南】:20年UX专家亲测的5大颠覆性交互范式与落地避坑清单
  • 2026 降AI率网站深度实测:实力出众,毕业党救急宝典 - 降AI小能手
  • Vue Excel Editor:让你的Vue应用拥有Excel般的编辑体验
  • 电脑出租平台推荐:免押金电脑租赁适合谁?5大高性价比平台怎么选 - 新闻快传
  • Hermes Agent 实战全解析:从安装避坑到成本控制,附 AI Skills 零代码落地方案
  • 2026 本地企业 AI 搜索优化排行榜:从城市词到推荐答案的增长路径 - 企业服务研究所
  • MAA明日方舟自动化助手:5个步骤实现游戏效率革命
  • 2026 苏州品牌 AI 露出公司 TOP6 排行榜:本地服务商实力对比 - 企业服务研究所
  • 深入解析高通8255 Boot流程:从安全岛(SAIL)握手到多核启动的底层逻辑
  • 下载Ollama并本地化部署Deepseek(Window)
  • 304不锈钢丝绳行业百科:厂家资质与应用全解析 - 奔跑123
  • 终极指南:3个秘诀让你成为虚幻引擎游戏修改大师
  • WebRTC回声消除定位方法
  • MusicFree:重塑你的音乐体验,从零开始打造专属播放器
  • 医院HIS与云PACS/RIS接口联调避坑指南:门诊缴费状态不同步怎么办?
  • AI 推荐优化服务商能力测评榜:提及率、排位、信源和案例怎么评估 - 企业服务研究所
  • 别再瞎试了!用Quartus Prime的Design Space Explorer II,5分钟搞定FPGA时序优化种子筛选
  • Atcoder Beginner Contest 488
  • 仅限首批200家获邀企业接触的Sora 2点云SDK:现在破解其多视角一致性约束算法(含Python可复现伪代码)
  • 如何彻底解决Visual C++运行库缺失问题:新手也能掌握的VisualCppRedist AIO完整指南
  • 自媒体内容工业化:基于AI Skills低代码实现穿搭账号矩阵自动化量产
  • Sora 2如何秒级生成4K多机位足球决赛?:从运动轨迹预测到物理引擎耦合的7层技术栈拆解
  • 植物大战僵尸玩家必看:PVZ Toolkit如何让你轻松掌控游戏全局
  • 三步找回青春记忆:这款数据备份工具让你永久保存QQ空间时光
  • 2026北京配眼镜推荐,有人花冤枉钱有人花得值,核心差在哪 - 配眼镜新资讯