当前位置:编程学习 > C/C++ >>

ZOJ1543 Stripies

本题是典型的贪心算法:

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

\


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

代码如下:

[cpp]
#include <iostream> 
#include <string.h> 
#include <math.h> 
using namespace std; 
#define MAX 1000 
void 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; 


 

摘自 香小鱼
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,