程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> ZOJ1543 Stripies

ZOJ1543 Stripies

編輯:C++入門知識

本題是典型的貪心算法:

假設有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; 


 

摘自 香小魚

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved