文章
2
粉丝
83
获赞
5
访问
1.2k
类似蛋糕一样的圆柱题由小到大堆叠在一起,求表面积。
从上往下看,即俯视图,所有圆柱可见面积之和为最大圆柱的圆面。
从侧面看,所有圆柱可见面积之和为所有援助侧面积。
所以表面积 = 所有圆柱侧面积 + 最大圆柱底面积 。当然,也可以写为 表面积 = ( 最大圆柱底面积 +最大圆柱侧面积 ) + 剩余圆柱底面积。
所以就有以下代码:
#include "bits/stdc++.h"
#include "string"
using namespace std;
int main(){
int n,k;int maxr = 0;
cin>>n;cin>>k;
int r[n],h[n];//r数组记录半径,h记录高度
for(int i = 0;i<n;i++){
cin>>r[i];cin>>h[i];
}
int maxsum = 0;int location = 0;int s[n];//s数组保存所有圆柱表面积之和
for(int i = 0;i<n;i++){
s[i] = 2*r[i]*h[i];
int sum = pow(r[i],2)+2*r[i]*h[i];//计算每一个圆柱底面积加侧面积
if(sum>maxsum){
maxsum = sum;//找出最大侧面积与底面积之和
location = i;//记录最大侧面积在数组中位置,该圆柱即为最底下的圆柱
}
}
if(location != n-1){//倘若最大侧面积圆柱不是数组最后一个,就把他放到最后一个,即位置s[n-1]
int temp = s[n-1];
s[n-1] = s[location];
s[location] = temp;
}
sort(s,s+n-1);//除了底面积与侧面积之和最大的圆柱外,其他圆柱的侧面积进行排序
long long...
登录后发布评论
算底面积怎么不乘pai?