• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            newplan

            阿基米德在洗澡時(shí)發(fā)現(xiàn)浮力原理,高興得來(lái)不及穿上褲子,跑到街上大喊:Eureka(我找到了)。
            posts - 39, comments - 26, trackbacks - 0, articles - 4
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            /*
            08.6.2
            */

            /*------------------INCLUDES BEGIN---------------*/
            #include 
            <cstdlib>
            #include 
            <iostream>
            #include 
            <fstream>
            #include 
            <string>
            #include 
            <cmath>
            #include 
            <algorithm>
            #include 
            <QApplication>
            #include 
            <QWidget>
            #include 
            <QPainter>
            #include 
            <Qt>
            /*-------------------INCLUDES END----------------*/


            /*-------------------MACROS BEGIN----------------*/
            #define INPUTFILE  
            "./c30.txt"
            #define MAX        
            100000
            #define PI         
            3.141592653589793238462643383279
            #define 
            ERROR      1e-7
            #define BUFFER     
            100
            #define RANG_LOW   
            0 
            #define RANG_UP    
            6283
            /*-------------------MACROS END------------------*/


            /*-----------NAMESPACE STD DECLARE BEGIN---------*/
            using std::cin;
            using std::ifstream;
            using std::ios;
            using std::cout;
            using std::endl;
            using std::sort;
            using std::
            string;
            /*----------NAMESPACE STD DECLARE  END------------*/



            /*-------------CLASS CIRCLE BEGIN-----------------*/
            class circle{
                  
            public:
                  
            double r;
                  
            double x;
                  
            double y;  
                  bool   v;  
            };
            /*-------------CLASS CIRCLE END-------------------*/


            /*-------------CLASS GREEDY BEGIN-----------------*/
                
            /*THE MOST IMPORTANT CLASS IN THIS PROGRAM*/
            class Greedy
            {
            public:
                    Greedy(void);
                    ~Greedy(){};
                    void GreedyCPU(void);
            //THE MAIN METHOD IN THIS CLASS
                    void AvailRate(void); 
            //CACULATE THE AVAILEBAL  RATE
                    circle c[BUFFER];   
            //CIRCLE BUFFER 
                    
            int getN(){return N;}
                    
            double getW(){return W;}
                    
            double getH(){return H;} 
                    
            double getP(){return p;}
             
             
            private
                    friend bool mycmp(circle t1,circle t2); 
                    bool CanBeInput(
            int which);//JUDGE CAN C[WHICH] BE PUT INTO THE CHEST
                    ifstream  Fin;      
            //INPUT DATA   
                    
            int N;              //CIRCLE NUMBER
                    
            double W;           //CHEST WIDTH
                    
            double H;           //CHEST HIGHT
                    
            double L;           //CHEST LONG 
                    
            double s;           //CHEST AREA
                    
            double sc;          //CIRCLE TOTAL AREA
                    
            double p;           //AVAILE RATE
                    
            int    k;           //CAN PUTED CIRCLE NUM
                    
            int t;              //FROM C[T] THAT CAN BE PUT INTO THE CHEST   
            }; 
            /*GREEDY METHEDS*/ 
            /*===================================================*/
            bool mycmp(circle t1,circle t2) 
            {
                 return t1.r
            >t2.r;

            /*===================================================*/ 
            Greedy::Greedy()
            {
                Fin.open(INPUTFILE,ios::in);
                Fin
            >>N;
                Fin
            >>W;
                Fin
            >>H;
                Fin
            >>L; 
                
            for(int i=0;i<N;i++)
                {
                  Fin
            >>c[i].r;
                  c[i].v
            = false;
                }
                sort(c,c
            +N,mycmp);
                t
            =-1
                s
            =W*H;
                sc
            =0;
                k
            =0;
                       
            }
            /*===================================================*/
            bool Greedy::CanBeInput(
            int which)
            {   
              
            if(c[which].x+c[which].r>W+ERROR||c[which].y+c[which].r>H+ERROR
                 ||c[which].x
            -c[which].r+ERROR < 0||c[which].y-c[which].r+ERROR < 0)
              return 
            false;
              
            for(int i=t;i<which;i++)//將 i=0 改為 i=t; 
              
            if(c[i].v==true)
              {
               
            double t1=c[which].x-c[i].x;
               
            double t2=c[which].y-c[i].y;
               
            double d =sqrt(t1*t1+t2*t2);
               
            if( c[which].r+c[i].r> d+ERROR  )
                return  
            false;             
              }    
              return 
            true;
            }
            /*===================================================*/
            void Greedy::GreedyCPU(void)      
            {
              bool   boo
            =false;
              
            double tempX=MAX;
              
            double tempY=MAX;
              
            double minX=MAX;
              
            double minY=MAX;   
              
            for(int i=0;i<N;i++)
                  
            if(c[i].r*2+ERROR <&& c[i].r*2+ERROR<H)
                  {
                  c[i].x
            =c[i].r;
                  c[i].y
            =c[i].r;
                  c[i].v
            =true;
                  t
            =i;
                  break;               
                  } 
              
            if(t==-1)
                {cout
            <<"null circle can be inputed"<<endl;return;}

              
            for(int i=t+1;i<N;i++)
              { 
                
            for(int m=t;m<i;m++)
                {   
            if(c[m].v==true){
                     
            for(int k=RANG_LOW;k<RANG_UP;k++)      
                     { 
                       c[i].x
            =c[m].x+(c[i].r+c[m].r)*cos(double(k)/1000);
                       c[i].y
            =c[m].y+(c[i].r+c[m].r)*sin(double(k)/1000);
                     
                       
            if(CanBeInput(i))
                       {
                        
                         boo
            =true;
                         
            if(minX>c[i].x)
                          {minX
            =c[i].x;tempY=c[i].y;}
                         
            if(minY>c[i].y)
                          {minY
            =c[i].y;tempX=c[i].x;}                 
                       }
            //if
                     }
            //for
                
                    
            if(boo)
                    {
                     
            if(minX<minY){c[i].x = minX;c[i].y = tempY;} 
                     
            else {c[i].x = tempX; c[i].y = minY;} 
                    
                     c[i].v
            =true;
                     minX
            =MAX;
                     minY
            =MAX;
                     boo
            =false;
                     break;          
                    }
            //if boo
                  }
            //if (c[m].v==true)
                }
            //for m
              } 
            //for  i  
            }
            /*===================================================*/  
            void Greedy::AvailRate()
            {
               
            for(int i=0;i<N;i++)
                
            if(c[i].v==true)
                  {k
            ++;
                   sc
            +=c[i].r*c[i].r*PI;
                  }
              p
            =sc/s;
            }
            /*===================================================*/     

            /*--------------CLASS GREEDY END-------------------*/

            /*--------------CLASS NEWBOX BEGIN-----------------*/

            class NEWBOX:
            public QWidget
            {   
                
            public:
                    NEWBOX(QWidget 
            *parent=0);
                    
                protected:
                    void paintEvent(QPaintEvent 
            *event); 
                
            private:
                    Greedy g;
            };
            /*===================================================*/ 
            NEWBOX::NEWBOX(QWidget 
            *parent):QWidget(parent)
            {
                 setFixedSize(g.getW()
            *50,g.getH()*50);
                 g.GreedyCPU();
                 g.AvailRate(); 
                 char temp[
            5];
                 sprintf(temp,
            "%f",g.getP());
                 char title[
            30]="using:";
                 strcat(title,temp);
                 setWindowTitle(title);
                 setPalette(QPalette(QColor(
            250250200)));
                 setAutoFillBackground(
            true);
                 
            }
            /*===================================================*/ 
            void NEWBOX::paintEvent(QPaintEvent 
            *)
            {    QPainter painter(this);
                 painter.setPen(Qt::SolidLine);
                 painter.setBrush(Qt::blue);
                 painter.translate(
            0,0);
                 
            int num=g.getN();
                 
            for(int i=0;i<num;i++)
                    
            if(g.c[i].v==true){
                        float x 
            = (float)g.c[i].x*50;
                        float y 
            = (float)g.c[i].y*50;
                        float r 
            = (float)g.c[i].r*50;
                        painter.drawEllipse(QRectF(x
            -r,g.getH()*50-y-r,2*r,2*r));
                    }
            }
            /*===================================================*/ 




            /*--------------CLASS NEWBOX END------------------*/



            /*--------------------MAIN BEGIN-------------------*/
            int main(int argc, char *argv[])
            {   
                
                QApplication app(argc, argv);
                NEWBOX   newbox;
                newbox.show();
                return app.exec();
            }
            /*--------------------MAIN END--------------------*/

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            99久久婷婷免费国产综合精品| 亚洲精品无码久久一线| 久久这里有精品| 日产精品久久久久久久性色| 精品久久香蕉国产线看观看亚洲| 久久av免费天堂小草播放| 亚洲AV无一区二区三区久久| 久久国产视频99电影| 亚洲精品乱码久久久久久蜜桃图片| 99精品久久久久久久婷婷| 久久精品国产亚洲AV蜜臀色欲| 精品久久久久久国产免费了| 久久天天躁狠狠躁夜夜96流白浆 | 97r久久精品国产99国产精| 久久中文字幕无码专区| 久久99国产精品久久| 一本一本久久aa综合精品 | 91精品国产91热久久久久福利 | 久久亚洲2019中文字幕| 蜜臀av性久久久久蜜臀aⅴ| 免费久久人人爽人人爽av| 欧美日韩成人精品久久久免费看| 99久久国产综合精品网成人影院 | 亚洲中文字幕伊人久久无码| 久久精品18| 久久久久亚洲精品男人的天堂| 国产精品gz久久久| 久久久久亚洲精品男人的天堂| 久久精品国产亚洲7777| 色婷婷久久久SWAG精品| 国内精品久久国产| 伊人久久综合成人网| 国产精品久久一区二区三区 | 91秦先生久久久久久久| 久久久久亚洲AV成人网人人网站 | 久久91精品国产91久久小草| 国产精品青草久久久久福利99| 欧美日韩中文字幕久久久不卡| 亚洲va中文字幕无码久久| 久久午夜电影网| 新狼窝色AV性久久久久久|