ZOJ1543 Stripies

来源:互联网 发布:牛尔的产品知乎 编辑:程序博客网 时间:2024/06/06 18:00

本题是典型的贪心算法:

假设有3个数字 a,b,c


想要S1<S1<S3最小的话,则a<b<c,所以大的数字先结合

代码如下:

#include <iostream>#include <string.h>#include <math.h>using namespace std;#define MAX 1000void bubble_sort(int s[],int len){bool flag=true;for(int ii=len-1;ii>0&&flag;ii--){flag=false;for(int jj=0;jj<ii;jj++){if(s[jj]>s[jj+1])//冒泡法,小的数字冒到上面{int temp= s[jj];s[jj]=s[jj+1];s[jj+1] = temp;flag=true;//如果有一次交换,说明还没有排好;如果本次没有进行调整,说明已经排序完成}}}}int main(){int n;int stripy[MAX];memset(stripy,0,MAX*sizeof(int));cout.precision(3);cout.setf(ios::fixed);while (cin>>n){for (int ii=0;ii<n;ii++){cin>>stripy[ii];}bubble_sort(stripy,n);double newdata=stripy[n-1];for(int ii=n-2;ii>=0;ii--){newdata =  2*sqrt(newdata*stripy[ii]);}cout<<newdata<<endl;}return 0;}