感謝我的學長們對我的帶領;
本題思想來源於我的學長:WArobot;
現有長短相等粗細不等(即最大承受中重量不等)的若干根繩子;
本題有三種承受能力分別爲:1,10,15的繩子;
首先輸入N,N爲N組測試數據;
n爲n個繩子,接下來是n個數據,代表每個繩子的最大承受的重量;
幾個承受能力不同的繩子一起的承受能力取決於承受能力最小的,
例如:一個承受能力爲3的和一個承受能力爲1的放在一起舉起重量爲2的重物,根據物理知識:重力會平均分配給每一個繩子;
輸出這些繩子所能承受的最大重量;
所以n跟繩子能承受的重量爲:承受能力最小的繩子的承受極限乘以n,
然後假設最短的斷掉,剩下的如上方法計算承受能力,用一個計數器變量記錄每次能承受的重量,並且以最大的爲標準不斷更新計數器變量;
最後輸出計數器變量;
代碼如下:
#include "iostream"
#include "algorithm"
using namespace std;
int main(){
int N,n,Max;
int max[1005];
cin>>N;
while(N--){
cin>>n;
Max=0;
for(int i=0;i<n;i++) cin>>max[i];
sort(max,max+n);
for(int i=0;i<n;i++){
if(Max<(max[i]*(n-i)))
Max=max[i]*(n-i);
}
cout<<Max<<endl;
}
return 0;
}