RZOJ题目传送门
考虑到本题难度中等,很适合学习数组和函数、过程的同学。
题目描述
输入N和一组整数(以0结束),N表示编号1,2,…,N的箱子,一组整数表示零件的重量(单位为G)。现要求将一批零件,分别装入编号为1,2,…,N的N只箱子中去,装入的方法是: 0G< 零件重量<100G 装入1号箱 100G<=零件重量<150G 装入2号箱 150G<=零件重量<200G 装入3号箱 …… …… 以此类推。装完之后,要求找出哪只箱子中的零件个数最多,若有相同的最多则要求全部列出(仅列出箱子的号数即可),若因零件太重无箱子可装,也应输出这类零件的个数。
解决方案
输入n与重量之后,可以判断应该装入哪个箱子,若要求比第n个箱子大,自动定为others就行了。
代码
#include<iostream>
using namespace std;
int n,x,a[100];
int find_box(int x){
if(x>0 && x<100) return 1;
for(int i=2;i<=n;i++){
int left=i*50;
int right=left+49;
if(x>=left && x<=right) return i;
}
return n+1;
}
int find_max(){
int ans=a[1];
for(int i=2;i<n;i++)
if(ans<a[i]) ans=a[i];
return ans;
}
void print(int zd){
for(int i=1;i<=n;i++)
if(a[i]==zd) cout<<"No."<<i<<endl;
if(a[n+1]>0) cout<<"Others:"<<a[n+1];
}
int main(){
cin>>n;
while(1){
cin>>x;
if(x==0) break;
int bh=find_box(x);
a[bh]++;
}
int zd=find_max();
print(zd);
return 0;
}
注意:此代码比较难理解,请自己登陆RZOJ去试一下。
这篇博客介绍了RZOJ的一道中等难度题目,涉及数组和函数应用。题目要求根据零件重量将其分配到不同编号的箱子中,并找出装有最多零件的箱子。解决方案中,通过判断零件重量来确定其应放入的箱子,如果零件过重无法放入任何箱子,则统计此类零件数量。代码实现可能较复杂,建议读者在RZOJ平台上亲自尝试运行理解。
187

被折叠的 条评论
为什么被折叠?



