天天看点

PAT-乙-1070 1070 结绳 (25 分)代码注解结果

PAT-乙-1070 1070 结绳 (25 分)代码注解结果

代码

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
	
	int n;
	cin>>n;
	double a[n];
	
	for(int i=0; i<n; i++){
		cin>>a[i];
	}
	
	sort(a, a+n);
	
	for(int i=0; i<n; i++){
		int tmp1 = a[i];
		int tmp2 = a[i+1];
		a[i+1] = (tmp1+tmp2)/2;
	}
	
	cout<<(int)a[n-1]<<endl;

	return 0;
}
           

注解

1、准确理解题目意思是关键。对折后成为另一条绳子,所以长度减半。要想绳子最终长度最大,等价于将绳子长度排序,从小到大依次折半(这样才能使损失的长度最小),最终得到的绳子是最大长度的。

结果

PAT-乙-1070 1070 结绳 (25 分)代码注解结果