当前位置: 首页 > 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.gsyq.cn/news/1442855.html

相关文章:

  • 三步轻松将网页小说转为EPUB电子书:WebToEpub完全使用指南
  • DLSS Swapper终极指南:5分钟轻松提升游戏性能的免费神器
  • 2026 降AI率网站深度实测:实力出众,毕业党救急宝典 - 降AI小能手
  • Vue Excel Editor:让你的Vue应用拥有Excel般的编辑体验
  • 深入解析高通8255 Boot流程:从安全岛(SAIL)握手到多核启动的底层逻辑
  • 2026 苏州品牌 AI 露出公司 TOP6 排行榜:本地服务商实力对比 - 企业服务研究所
  • 下载Ollama并本地化部署Deepseek(Window)
  • MusicFree:重塑你的音乐体验,从零开始打造专属播放器
  • 如何彻底解决Visual C++运行库缺失问题:新手也能掌握的VisualCppRedist AIO完整指南
  • 自媒体内容工业化:基于AI Skills低代码实现穿搭账号矩阵自动化量产
  • Sora 2如何秒级生成4K多机位足球决赛?:从运动轨迹预测到物理引擎耦合的7层技术栈拆解
  • 2026 AI 搜索服务商口碑榜:哪些团队更适合高决策行业 - 企业服务研究所
  • AI 辅助开发引争议:rsync 稳定性与迭代速度的尖锐冲突
  • Navicat Mac版无限重置试用期:3种简单方法让你告别14天限制
  • 系统架构设计师拿到证书后能加多少工资?市场调研报告
  • 5分钟告别Windows预览版烦恼:OfflineInsiderEnroll零门槛使用指南
  • Ubuntu 22.04上解决Realsense D455摄像头权限问题的保姆级教程(附Realsense-Viewer安装)
  • 学生用环保网页作业源码:含轮播图、留言表单与多页面CSS布局
  • AntV X6 自定义算法布局
  • 2026中国超声波泥位计源头厂家权威推荐榜:从技术实力到工程选型的全景解析 - 仪表品牌排行榜
  • 别再只盯着20/60了!用Backtrader回测SMA双均线,手把手教你找到最适合你的周期参数
  • 如何用ZonyLrcToolsX三分钟解决音乐库歌词缺失难题?
  • MySQL 8.0教学资源包:26讲PPT课件+配套可运行PHP/SQL代码,含安装配置、查询优化、存储过程、权限控制、主从复制与三个实战项目
  • 避开这些坑!STM32G473 Bootloader开发中CAN/USART升级的5个常见问题与调试心得
  • ibaPDA 7.0.1安装包:支持S7-1200/1500实时曲线监控、故障触发捕获与离线数据分析
  • 药食同源变“智商税”?AI辨体如何用技术撕开政策死结
  • 麒麟V10系统4K屏字体太小?三步搞定Mate桌面DPI缩放(实测有效)
  • 3种高效方法:利用OCAuxiliaryTools彻底解决黑苹果配置难题
  • SourceGit:跨平台Git图形化客户端终极指南,让Git操作变得简单直观
  • AI都能一键生成网站了,还要建站系统干嘛?