亚洲AV乱码一区二区三区女同,欧洲在线免费高清在线a,中文字幕丝袜四区,老少配老妇熟女中文高清

<s id="38axe"><nobr id="38axe"></nobr></s><abbr id="38axe"><u id="38axe"></u></abbr>

<sup id="38axe"></sup>
    <acronym id="38axe"></acronym>
  • <s id="38axe"><abbr id="38axe"><ins id="38axe"></ins></abbr></s>
    
    
        <s id="38axe"></s>

        2013下半年軟件設計師下午真題(二)

        軟件設計師 責任編輯:pengying 2017-08-01

        添加老師微信

        備考咨詢

        加我微信

        摘要:無論頭上是怎樣的天空,都要勇敢地對自己說:我準備承受任何風暴!所有的努力在考試時都將得到論證。下面是關于2013下半年軟件設計師下午真題,祝大家考試順利。

        >>>2017年軟件設計師網(wǎng)絡課堂課
          >>>軟件設計師歷年真題題庫
          >>>2017年軟件設計師考試指南

        無論頭上是怎樣的天空,都要勇敢地對自己說:我準備承受任何風暴!所有的努力在考試時都將得到論證。下面是關于2013下半年軟件設計師下午真題,祝大家考試順利。>>>查看完整版請點擊2013下半年軟件設計師下午真題匯總. 

        【4】閱讀下列說明和C代碼,回答問題1至問題3,將解答填入答題紙的對應欄內(nèi)。

        【說明】

        某工程計算中要完成多個矩陣相乘(鏈乘)的計算任務。

        兩個矩陣相乘要求第一個矩陣的列數(shù)等于第二個矩陣的行數(shù),計算量主要由進行乘法運算的次數(shù)決定。采用標準的矩陣相乘算法,計算Am×n*Bn×p,需要m*n*p次乘法運算。

        矩陣相乘滿足結合律,多個矩陣相乘,不同的計算順序會產(chǎn)生不同的計算量。以矩陣A110×100,A2100×5,A35×50三個矩陣相乘為例,若按(A1*A2)*A3計算,則需要進行10*100*5+10*5*50=7500次乘法運算;若按A1*(A2*A3)計算,則需要進行100*5*50+10*100*50=75000次乘法運算??梢姴煌挠嬎沩樞驅τ嬎懔坑泻艽蟮挠绊?。

        矩陣鏈乘問題可描述為:給定n個矩陣,矩陣Ai的維數(shù)為pi-1×pi,其中i = 1,2,….n。確定一種乘法順序,使得這n個矩陣相乘時進行乘法的運算次數(shù)最少。

        由于可能的計算順序數(shù)量非常龐大,對較大的n,用蠻力法確定計算順序是不實際的。經(jīng)過對問題進行分析,發(fā)現(xiàn)矩陣鏈乘問題具有最優(yōu)子結構,即若A1*A2*…*An的一個最優(yōu)計算順序從第k個矩陣處斷開,即分為A1*A2*….Ak和Ak+1*Ak+2*…*An兩個子問題,則該最優(yōu)解應該包含A1*A2*…*Ak的一個最優(yōu)計算順序和Ak+1*Ak+2*…An的一個最優(yōu)計算順序。據(jù)此構造遞歸式,

        圖片1.png

        其中,cost[i][j]表示Ai+1*Ai+2*...Aj+1的最優(yōu)計算的計算代價。最終需要求解cost[0][n-1]。

        【C代碼】

        算法實現(xiàn)采用自底向上的計算過程。首先計算兩個矩陣相乘的計算量,然后依次計算3個矩陣、4個矩陣、…、n個矩陣相乘的最小計算量及最優(yōu)計算順序。下面是算法的C語言實現(xiàn)。

        (1)主要變量說明

        n:矩陣數(shù)

        seq[]:矩陣維數(shù)序列

        cost[][]:二維數(shù)組,長度為n*n,其中元素cost[i][j]表示Ai+1*Ai+2*…Aj+1的最優(yōu)計算的計算代價

        trace[][]:二維數(shù)組,長度為n*n,其中元素trace[i][j]表示Ai+1*Ai+2*Aj+1的最優(yōu)計算對應的劃分位置,即k

        (2)函數(shù)cmm

        #define N 100

        int cost[N][N];

        int trace[N][N];

        int cmm(int n,int seq[]){

        int tempCost;

        int tempTrace;

        int i,j,k,p;

        int temp;

        for( i=0;i

        for(p=1;p

        for(i=0; (1) ;i++){

        (2) ;

        tempCost = -1;

        for(k = i;k

        temp= (3) ;

        if(tempCost==-1||tempCost>temp){

        tempCost = temp;

        (4) ;

        }

        }

        cost[i][j] = tempCost;

        trace[i][j] = tempTrace;

        }

        }

        return cost[0][n-1];

        }

        【問題1】(8分)

        根據(jù)以上說明和C代碼,填充C代碼中的空(1)~(4)。

        【問題2】(4分)

        根據(jù)以上說明和C代碼,該問題采用了 (5) 算法設計策略,時間復雜度 (6) 。(用O符號表示)

        【問題3】(3分)

        考慮實例n=6,各個矩陣的維數(shù):A1為5*10,A2為10*3,A3為3*12,A4為12*5,A5為5*50,A6為50*6,即維數(shù)序列為5,10,3,12,5,50,6。則根據(jù)上述C代碼得到的一個最優(yōu)計算順序為 (7) (用加括號方式表示計算順序),所需要的乘法運算次數(shù)為 (8) 。

        【5】閱讀下列說明和C++代碼,將應填入(n)處的字句寫在答題紙的對應欄內(nèi)。

        【說明】

        欲開發(fā)一個繪圖軟件,要求使用不同的繪圖程序繪制不同的圖形。以繪制直線和圓形為例,對應的繪圖程序如表5-1所示。

        圖片2.png

        該繪圖軟件的擴展性要求,將不斷擴充新的圖形和新的繪圖程序。為了避免出現(xiàn)類爆炸的情況,現(xiàn)采用橋接(Bridge)模式來實現(xiàn)上述要求,得到如圖5-1所示的類圖。

        圖片3.png

          圖5-1 類圖 【C++代碼】

        class DP1{

        public:

        static void draw_a_line(double x1,double y1,double x2,double y2){/*代碼省略*/}

        static void draw_a_circle(double x,double y,double r){ /*代碼省略*/}

        };

        class DP2{

        public:

        static void drawline(double x1,double x2,double y1,double y2){/*代碼省略*/}

        static void drawcircle(double x,double y,double r){/*代碼省略*/}

        };

        class Drawing{

        public:

        (1) ;

        (2) ;

        };

        class V1Drawing:public Drawing{

        public:

        void drawLine(double x1,double y1,double x2, double y2){/*代碼省略*/}

        void drawCircle(double x, double y, double r){ (3) ;}

        };

        class V2Drawing:public Drawing{

        public:

        void drawLine(double x1,double y1,double x2, double y2){/*代碼省略*/}

        void drawCircle(double x, double y, double r){ (4) ;}

        };

        class Shape{

        public:

        (5) ;

        Shape(Drawing * dp){ _dp = dp;}

        void drawLine(double x1, double y1,double x2, double y2){_dp->drawLine(x1,y1,x2,y2);}

        void drawCircle(double x, double y, double r){_dp->drawCircle(x,y,r);}

        private: Drawing * _dp;

        };

        class Rectangle:public Shape{

        public:

        void draw__(17)__{/*代碼省略*/}

        //其余代碼省略

        };

        class Circle:public Shape{

        private: double _x,_y,_r;

        public:

        Circle(Drawing * dp, double x, double y, double r): (6) {_x = x; _y = y; _r = r;}

        void draw__(18)__{ drawCircle(_x, _y, _r);}

        };

        【6】閱讀下列說明和Java代碼,將應填入(n)處的字句寫在答題紙的對應欄內(nèi)。

        【說明】

        欲開發(fā)一個繪圖軟件,要求使用不同的繪圖程序繪制不同的圖形。以繪制直線和圓形為例,對應的繪圖程序如表6-1所示。

        該繪圖軟件的擴展性要求,將不斷擴充新的圖形和新的繪圖程序。為了避免出現(xiàn)類爆炸的情況,現(xiàn)采用橋接(Bridge)模式來實現(xiàn)上述要求,得到如圖6-1所示的類圖。

        圖片5.png

          圖6-1 類圖

        【Java代碼】

        (1) Drawing{

        (2) ;

        (3) ;

        }

        class DP1{

        static public void draw_a_line(double x1, double y1, double x2, double y2) {/*代碼省略*/}

        static public void draw_a_circle(double x, double y, double r) {/*代碼省略*/}

        }

        class DP2{

        static public void drawline(double x1, double y1, double x2 ,double y2){/*代碼省略*/}

        static public void drawcircle (double x, double y, double r){/*代碼省略*/}

        }

        class V1Drawing implements Drawing{

        public void drawLine(double x1, double y1, double x2 ,double y2){/*代碼省略*/}

        public void drawCircle(double x, double y, double r){ (4) ;}

        }

        class V2Drawing implements Drawing{

        public void drawLine(double x1, double y1, double x2 ,double y2){/*代碼省略*/}

        public void drawCircle (double x, double y, double r){ (5) ;}

        }

        abstract class Shape{

        private Drawing _dp;

        (6) ;

        Shape(Drawing dp) {_dp=dp;}

        public void drawLine(double x1, double y1, double x2 ,double y2){_dp.drawLine(x1,y1,x2,y2); }

        public void drawCircle (double x, double y, double r){ _dp.drawCircle(x,y,r);}

        }

        class Rectangle extends Shape{

        private double _x1,_x2,_y1,_y2;

        public Rectangle(Drawing dp,double x1, double y1, double x2 ,double y2) {/*代碼省略*/}

        public void draw__(21)__{/*代碼省略*/}

        }

        class Circle extends Shape{

        private double _x, _y, _r;

        public Circle(Drawing dp,double x, double y, double r) {/*代碼省略*/}

        public void draw__(22)__{drawCircle(_x,_y,_r);}

        }

        溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內(nèi)容為準!

        軟考備考資料免費領取

        去領取

        !
        咨詢在線老師!