文章

2

粉丝

55

获赞

4

访问

554

头像
表面积 题解:
推荐阅读
P1882 华东师范大学2020年机试
发布于2024年1月30日 18:26
阅读数 320

类似蛋糕一样的圆柱题由小到大堆叠在一起,求表面积。

从上往下看,即俯视图,所有圆柱可见面积之和为最大圆柱的圆面。

从侧面看,所有圆柱可见面积之和为所有援助侧面积。

所以表面积 = 所有圆柱侧面积 + 最大圆柱底面积  。当然,也可以写为 表面积 = ( 最大圆柱底面积 +最大圆柱侧面积 ) + 剩余圆柱底面积。

所以就有以下代码:

#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...
登录查看完整内容


登录后发布评论

2 条评论
gym VIP
2024年3月19日 14:24

算底面积怎么不乘pai?

赞(0)

snake : 回复 gym: 注意看题目的输出:一行中输出。表示可能的最大表面积为 乘以圆周率的cm^2 。

2024年3月19日 16:56