欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      奇數(shù)階魔方陣算法分析

      時(shí)間:2019-05-12 19:10:20下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《奇數(shù)階魔方陣算法分析》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《奇數(shù)階魔方陣算法分析》。

      第一篇:奇數(shù)階魔方陣算法分析

      C語(yǔ)言程序設(shè)計(jì)教案

      奇數(shù)階魔方陣

      一、提出問(wèn)題

      所謂“奇數(shù)階魔方陣”是指n為不小于3的奇數(shù)的魔方陣。這類(lèi)魔方陣的形式多樣,這里我們僅討論其中的一種形式的正規(guī)魔方陣。例如:3階、5階和7階的魔方陣如圖3 – 4 所示。

      3039*********416357,46132022,***2192***211***2414322314049圖3 – 4 3階5階和7階魔方陣

      ***5

      44431211202容易知道,這三個(gè)魔方陣的魔方常數(shù)分別是15、65和175。

      現(xiàn)在要求給出:能讓計(jì)算機(jī)自動(dòng)輸出類(lèi)似圖3 – 4 所示的n階奇數(shù)魔方陣的算法,其中n為任意給定的一個(gè)不小于3的奇數(shù)。

      二、簡(jiǎn)單分析

      決定“奇數(shù)階魔方陣”的關(guān)鍵是要按要求決定其方陣中的各個(gè)數(shù)字。觀察圖3 – 4中的三個(gè)奇數(shù)階魔方陣,不難發(fā)現(xiàn):

      1.由于是正規(guī)魔方,故所填入的n 2個(gè)不同整數(shù)依次為1、2、3、…、n 2 ; 2.各行、列和對(duì)角線上的數(shù)字雖各不相同,但其和卻是相同的。這表明,其魔方常數(shù)可由公式n(n 2 + 1)/ 2得到。

      3.?dāng)?shù)字在陣列中的次序,并沒(méi)有遵從陣列單元的行、列下標(biāo)的順序,但數(shù)字“1”卻始終出現(xiàn)在陣列第一行的正中間位置,而數(shù)字“n 2”也始終出現(xiàn)在陣列第n行的正中間位置,這說(shuō)明陣列中的數(shù)字排列應(yīng)該是有一定規(guī)律的。

      通過(guò)對(duì)兩個(gè)奇數(shù)階魔方陣的簡(jiǎn)單分析,下面幾個(gè)基本問(wèn)題必須得到解決: ◆ 奇數(shù)階魔方陣中的數(shù)字有些什么規(guī)律? ◆ 數(shù)字“1”的位置應(yīng)如何確定?

      C語(yǔ)言程序設(shè)計(jì)教案

      三、設(shè)計(jì)準(zhǔn)備

      1.奇數(shù)階魔方陣中的數(shù)字規(guī)律

      通過(guò)對(duì)奇數(shù)階魔方陣的分析,其中的數(shù)字排列有如下的規(guī)律:(1)自然數(shù)1出現(xiàn)在第一行的正中間;

      (2)若填入的數(shù)字在第一行(不在第n列),則下一個(gè)數(shù)字在第n行(最后一行)且列數(shù)加1(列數(shù)右移一列);

      (3)若填入的數(shù)字在該行的最右側(cè),則下一個(gè)數(shù)字就填在上一行的最左側(cè);(4)一般地,下一個(gè)數(shù)字在前一個(gè)數(shù)字的右上方(行數(shù)少1,列數(shù)加1);

      (5)若應(yīng)填的地方已經(jīng)有數(shù)字或在方陣之外,則下一個(gè)數(shù)字就填在前一個(gè)數(shù)字的下方。(一般地,n的倍數(shù)的下一個(gè)數(shù)字是在該數(shù)的下方。)

      816按照上述的規(guī)律,我們來(lái)完成3階的魔方陣:357

      4921第一步:將“1”填入1行2列的位置,即(按規(guī)律(1));

      1第二步:將“2”填入3(最后)行3(= 2 + 1)列的位置,即

      (按規(guī)律

      2(2));

      1第三步:將“3”填入2行1列的位置,即3(按規(guī)律(3));

      21第四步:將“4”填入3行1列的位置(“3”的下面);即3(按規(guī)律(5))

      422

      C語(yǔ)言程序設(shè)計(jì)教案

      1第五步:將“5”填入2行2列的位置;即35216(按規(guī)律(4));

      4第六步:將“6”填入1行3列的位置,即352(按規(guī)律(4));

      416第七步:將“7”填入2行3列的位置(“6”的下面),即357(按規(guī)律(5));

      42816第八步:將“8”填入1行1列的位置,即357(按規(guī)律(3));

      42816第九步:將“9”填入3行2列的位置,即357(按規(guī)律(2))。492至此,一個(gè)3階魔方陣構(gòu)造完成了。2.?dāng)?shù)字“1”的位置確定方法

      由于數(shù)字“1”要填寫(xiě)在魔方陣第一行的正中間,因此我們只需要確定第一行的正中間單元的列下標(biāo)即可。

      考慮到對(duì)于一個(gè)奇數(shù)階魔方陣來(lái)說(shuō),它的每一行都有奇數(shù)個(gè)位置,所以“正中間的位置”就必然存在。容易知道,一個(gè)n(為奇數(shù))階魔方陣第一行的正中間單元的列下標(biāo)為整數(shù)(n + 1)/ 2。于是數(shù)字“1”應(yīng)填寫(xiě)在魔方陣列的第1行第(n + 1)/ 2列處。

      C語(yǔ)言程序設(shè)計(jì)教案

      四、實(shí)施步驟

      1.算法編制的工作順序:

      有了上述的設(shè)計(jì)準(zhǔn)備,我們所要的算法可按如下的工作順序編制:

      第一步:輸入魔方陣的階數(shù)n(為奇數(shù)),并以此定義一個(gè)二維數(shù)組; 第二步:確定所謂“正中間位置”的列下標(biāo)值,以及應(yīng)填入的最大數(shù)字; 第三步:進(jìn)行完成魔方陣的填寫(xiě)工作; 第四步:輸出已完成的奇數(shù)階魔方陣。2.變量設(shè)置:

      N :表示魔方陣的階數(shù)(為奇數(shù)); A :表示魔方陣的二維數(shù)組; I :數(shù)組A的行序號(hào); J :數(shù)組A的列序號(hào); R :填入的數(shù)字; S :對(duì)角線上各數(shù)字之和。

      3.參考框圖:如圖3 – 5 所示。4.框圖說(shuō)明:整個(gè)框圖應(yīng)分為三個(gè)功能部分:

      第一個(gè)部分的功能是完成奇數(shù)N的輸入,并定義二維數(shù)組,完成有關(guān)元素的數(shù)值計(jì)算,同時(shí)能實(shí)現(xiàn)當(dāng)N不是奇數(shù)時(shí)自動(dòng)結(jié)束。圖3 – 5 處理“奇數(shù)階魔方陣”問(wèn)題的框圖

      第二個(gè)部分的功能是完成魔方陣的填寫(xiě)工作。

      填寫(xiě)并不是按數(shù)組A的下標(biāo)順序進(jìn)行,而是通過(guò)對(duì)有關(guān)規(guī)律的判斷確定下標(biāo)I和J的不同值來(lái)進(jìn)行。其中涉及到了判斷“R是N的整數(shù)倍?”,這可以通過(guò)判斷是否有等式R – INT(R / N)? N = 0 成立來(lái)實(shí)現(xiàn)。

      第三個(gè)部分的功能是完成輸出魔方陣和計(jì)算相應(yīng)魔方常數(shù)的工作。

      計(jì)算相應(yīng)魔方常數(shù)的工作是通過(guò)對(duì)魔方陣的對(duì)角線中各元素?cái)?shù)值來(lái)實(shí)現(xiàn),即在準(zhǔn)備輸出打印元素A(I , I)時(shí),通過(guò)累加方式S = S + A(I , I)來(lái)實(shí)現(xiàn)。

      C語(yǔ)言程序設(shè)計(jì)教案

      5.參考算法

      第01步:輸入非負(fù)整數(shù)N,并定義數(shù)組 A(N , N); 第02步:若 N – INT(N / 2)? 2 = 0,則結(jié)束。第03步:讓J ?(N + 1)/ 2 , C ? N ? N , 且I ? 1; 第04步:讓 R ? 1;

      第05步:若R > C , 則執(zhí)行第16步; 第06步:讓 A(I , J)? R;

      第07步:若R – INT(R / N)? N = 0 , 則執(zhí)行第13步; 第08步:讓I ? I – 1 ;

      第09步:若I + 1 = 1,則讓I ? N; 第10步:讓J ? J + 1;

      第11步:若J – 1 ? N,則執(zhí)行第15步; 第12步:讓J ? 1 , 并執(zhí)行第15步;

      第13步:讓I ? I + 1。若I – 1 ? N,執(zhí)行第15步; 第14步:讓I ? 1 ;

      第15步:讓R ? R + 1,執(zhí)行第05步; 第16步:讓 S ? 0 , I ? 1 ; 第17步:若I > N , 則執(zhí)行第24步 ; 第18步:讓 S ? S + A(I , I); 第19步:讓J ? 1;

      第20步:若J > N , 則執(zhí)行第13步; 第21步:在位置 4 J 處輸出 A(I , J); 第22步:讓J ? J + 1,并執(zhí)行第20步; 第23步:換行,讓I = I + 1 , 并執(zhí)行第17步; 第24步:輸出 S,結(jié)束。

      參考算法的編制與框圖稍有不同,但功能是一樣的。其中:

      第01步至第03步為第一部分,完成奇數(shù)的輸入,以及有關(guān)的準(zhǔn)備工作。當(dāng)輸入的N不是奇數(shù)時(shí),會(huì)自動(dòng)結(jié)束。第04步至第15步完成魔方陣的填寫(xiě)工作。第16步至第24步完成輸出魔方陣和計(jì)算相應(yīng)魔方常數(shù)的工作。

      C語(yǔ)言程序設(shè)計(jì)教案

      五、評(píng)估反思

      應(yīng)當(dāng)說(shuō),奇數(shù)階魔方陣的形式是多種多樣的,這里我們僅僅只對(duì)其中的一種形式加以討論。這里所編制的參考算法從理論上看可以實(shí)現(xiàn)對(duì)指定形式的任何大小“奇數(shù)階魔方陣”的輸出,但在實(shí)際輸出時(shí)應(yīng)考慮輸出設(shè)備的相關(guān)條件。

      在參考算法中,第04步至第15步這部分是整個(gè)算法的核心部分,其功能是完成整個(gè)魔方的數(shù)字填入工作,因此其編制的思想、用到的一些處理方陣元素的技巧和經(jīng)驗(yàn),應(yīng)引起我們的注意。

      1.充分利用規(guī)律間共同特性。

      在這部分里我們通過(guò)若干次對(duì)下標(biāo)值的判斷,巧妙地將奇數(shù)階魔方陣應(yīng)當(dāng)遵循的規(guī)律(2)、(3)和(4)結(jié)合起來(lái),使魔方陣的填寫(xiě)工作能得以順利進(jìn)行。這是因?yàn)槠鏀?shù)階魔方陣要求的五個(gè)規(guī)律中,規(guī)律(2)、(3)和(4)與單元的下標(biāo)有直接的關(guān)系。

      2.選擇首次判斷對(duì)象的要求。

      在這部分里我們首先進(jìn)行的是對(duì)填入數(shù)字R是否是階數(shù)N的整數(shù)倍的判斷,這實(shí)際上是將奇數(shù)階魔方陣的規(guī)律(5)作為主要的判斷標(biāo)準(zhǔn)。那么為什么不用另外的四個(gè)規(guī)律來(lái)作為主要的判斷標(biāo)準(zhǔn)呢?這主要是考慮到對(duì)于要填入的數(shù)字,在奇數(shù)階魔方陣的五個(gè)規(guī)律中,只有規(guī)律(5)將該數(shù)字直接與階數(shù)聯(lián)系起來(lái),而另外四個(gè)規(guī)律則沒(méi)有(僅僅與填入單元的下標(biāo)值有直接的聯(lián)系)。這告訴我們,算法的編制應(yīng)注意那些具有單一性特點(diǎn)的事實(shí)、特性或規(guī)律等等。

      3.有關(guān)魔方常數(shù)的得到。

      要得到魔方常數(shù),最直接的方法是通過(guò)公式S = n(n 2 + 1)/ 2來(lái)計(jì)算,但這樣做不能顯示整個(gè)魔方陣的構(gòu)造是否正確。在參考算法中,我們是通過(guò)累加魔方陣對(duì)角線中各元素?cái)?shù)值來(lái)實(shí)現(xiàn)的,這樣做的好處有,其一是體現(xiàn)了數(shù)字累加方式在算法編制中的作用,其二是顯示了所構(gòu)造的魔方陣是否正確。當(dāng)然,我們也可以通過(guò)累加魔方陣某行或某列中各元素?cái)?shù)值來(lái)實(shí)現(xiàn),只不過(guò)設(shè)計(jì)的步驟要稍多一些,因?yàn)樾枰獜膎行(列)中確定某行(列)的步驟。

      4.關(guān)于魔方陣的驗(yàn)證。

      本參考算法中沒(méi)有設(shè)計(jì)利用魔方常數(shù)來(lái)判斷所完成的方陣是否是魔方陣的步驟,但設(shè)計(jì)這一功能并不困難。比較方便的做法可以為:在第一部分加入用公式計(jì)算魔方常數(shù)的步驟,將第三部分分成輸出方陣和驗(yàn)證方陣兩部分。在驗(yàn)證部分里,設(shè)計(jì)分別計(jì)算各行、各列及對(duì)角線中各數(shù)字和的步驟,以及將這些數(shù)字和與前面計(jì)算出的魔方常數(shù)進(jìn)行比較的步驟。若對(duì)此有興趣,不妨自己動(dòng)手試試。

      C語(yǔ)言程序設(shè)計(jì)教案

      六、要點(diǎn)回顧

      1.?dāng)?shù)學(xué)思想:構(gòu)成奇數(shù)階魔方陣應(yīng)當(dāng)遵循的五個(gè)規(guī)律;

      2.常用公式:判斷“R是N的整數(shù)倍”的等式R – INT(R / N)? N = 0 ; 3.算法技巧:利用累計(jì)方式計(jì)算魔方常數(shù)和完成魔方陣輸出的方法。4.實(shí)用方法:判斷整數(shù)R是否是整數(shù)N的整數(shù)倍的方法。

      第二篇:魔方陣 實(shí)驗(yàn)報(bào)告

      << 魔方陣 >>實(shí)驗(yàn)報(bào)告

      一. 實(shí)驗(yàn)?zāi)康?/p>

      1.設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu);

      2.設(shè)計(jì)算法完成任意n階魔方陣的填數(shù); 3.分析算法的時(shí)間復(fù)雜度。

      二. 實(shí)驗(yàn)內(nèi)容

      魔方陣,又叫幻方陣,在我國(guó)古代稱(chēng)為“縱橫圖”。它是在一個(gè)n*n的矩陣中填入1到n*n的數(shù)字(n為奇數(shù)),使得每一行,每一列,每條對(duì)角線的累加和都相等。

      三. 程序代碼

      源程序:

      #include void Square(int n){ int a[9][9];

      int p=0, q=(n-1)/2;

      a[0][q]=1;

      //在第0行的中間位置填1

      for(int i=2;i<=n*n;i++)

      {

      p=(p-1+n)% n;

      //求i所在行號(hào)

      q=(q-1+n)% n;

      //求i所在列號(hào)

      if(a[p][q]>0){

      p=(p+2)%n;q=(q+1)%n;

      //這兩句進(jìn)行了修改,否者得不到正確的答案,切記切記??!

      }//如果位置(p, q)已經(jīng)有數(shù),填入同一列下一行

      a[p][q]=i;

      }

      for(p=0;p

      {for(q=0;q

      cout<

      cout<<'n';} }

      void main(){ int n;cout<<“請(qǐng)輸入魔方矩陣的階數(shù)n=(n為奇數(shù)且<=9):”;cin>>n;cout<<“魔方陣的排列結(jié)果為:n”;

      Square(n);} 四.結(jié)果與心得體會(huì)

      1.程序的測(cè)試結(jié)果是什么? 答:n=3時(shí)

      n=5時(shí)

      2.在調(diào)試的過(guò)程中遇到了什么問(wèn)題,是如何解決的?

      答:在調(diào)試的過(guò)程中遇到了以下幾個(gè)問(wèn)題:

      1.Square函數(shù)的形式參數(shù)不可以是(int a[][], int n),因?yàn)槌绦蚴窃诰幾g時(shí)就會(huì)為數(shù)組分配內(nèi)存,而那樣的形式參數(shù)是不合理的。在調(diào)試程序的過(guò)程中,我反復(fù)試了好多次,也證明了那是錯(cuò)的。解決方法:直接將Square函數(shù)的形參設(shè)為(int n),改在在其函數(shù)內(nèi)定義數(shù)組a[9][9],這樣就能將問(wèn)題很好的解決。

      2.在書(shū)中提供的Square函數(shù)里面,有一個(gè)語(yǔ)句是這樣的if(a[p][q]>0)

      p=(p+1)%n;,這個(gè)語(yǔ)句是錯(cuò)的。之所以會(huì)有這樣的錯(cuò)誤,是由于錯(cuò)誤的理解了“如果位置(p, q)已經(jīng)有數(shù),填入同一列下一行”這一句的意思,這句的意思是填入原數(shù)的下面,而不是即將填入的那個(gè)數(shù)但又已填入數(shù)的那個(gè)數(shù)的下面。

      解決方法:將該語(yǔ)句改成:

      if(a[p][q]>0)

      {

      p=(p+2)%n;q=(q+1)%n;

      },這樣就可以了。

      3.由于數(shù)組a[][]是在Square函數(shù)中定義的,因此將數(shù)組數(shù)據(jù)輸出的語(yǔ)句就只能放在Square函數(shù)中實(shí)現(xiàn)。

      第三篇:C語(yǔ)言程序編程:輸入奇數(shù),輸出n階幻方矩陣

      #include #define MAX 100

      void huanFang(int n){

      int a[MAX][MAX]={0};//初始化數(shù)組都為0 int i,j;int m,k;//當(dāng)前位置 int p,q;//下一個(gè)位置 int data=0;m=0;k=n/2;while(data

      q=k+1;//右

      if(p<0&&q=0){//上出框

      //printf(“qian shang chu: p=%d,q=%dn”,p,q);

      p=n-1;//下邊放

      //printf(“hou shang chu: p=%d,q=%dn”,p,q);}else if(p>=0&&p

      //printf(“qian youchu: p=%d,q=%dn”,p,q);

      q=0;//左邊放

      //printf(“hou youchu: p=%d,q=%dn”,p,q);}else if(p<0&&q==n){//斜出框

      //printf(“qian xiechu: p=%d,q=%dn”,p,q);

      p=m+1;//下格填

      q=k;

      //printf(“hou xiechu: p=%d,q=%dn”,p,q);} if(a[p][q]!=0){//排重

      //printf(“qian chongpai: p=%d,q=%dn”,p,q);

      p=m+1;//下格填

      q=k;

      //printf(“hou chongpai: p=%d,q=%dn”,p,q);} m=p;k=q;}

      for(i=0;i

      printf(“%d ”,a[i][j]);

      }

      printf(“n”);} }

      void main(){ int n;//判斷是否輸入的是奇數(shù)

      while(1){

      printf(“please input n jie,n is oddn”);

      scanf(“%d”,&n);

      if(n%2==1)

      break;} huanFang(n);}

      第四篇:數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析

      數(shù)據(jù)結(jié)構(gòu)算法設(shè)計(jì)與分析、計(jì)算機(jī)網(wǎng)絡(luò)、計(jì)算機(jī)組成原理、操作系統(tǒng)原理、編譯原理、數(shù)據(jù)庫(kù)原理及應(yīng)用、軟件工程、軟件測(cè)試等計(jì)算機(jī)基礎(chǔ)理論課程;

      網(wǎng)頁(yè)制作、程序設(shè)計(jì)Java、JSP程序設(shè)計(jì)、Oracle、XML程序設(shè)計(jì)、計(jì)算機(jī)網(wǎng)絡(luò)、SSH(Struts+Spring+Hibernate)框架、Java EE程序設(shè)計(jì)、Ajax程序設(shè)計(jì)、Linux+PHP+MySQL程序設(shè)計(jì)、Android手機(jī)開(kāi)發(fā)、UML系統(tǒng)分析與設(shè)計(jì)、性能測(cè)試、自動(dòng)化軟件測(cè)試、軟件質(zhì)量保證、畢業(yè)設(shè)計(jì)及項(xiàng)目綜合實(shí)訓(xùn)等。

      數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò)、計(jì)算機(jī)組成原理、操作系統(tǒng)原理、編譯原理、數(shù)據(jù)庫(kù)原理及應(yīng)用、金融學(xué)概論、西方經(jīng)濟(jì)學(xué)等基礎(chǔ)理論課程;

      網(wǎng)頁(yè)制作、程序設(shè)計(jì)Java、JSP程序設(shè)計(jì)、J2EE程序設(shè)計(jì)、SQL Server數(shù)據(jù)庫(kù)、Oracle數(shù)據(jù)庫(kù)、Linux操作系統(tǒng)、UML系統(tǒng)分析與設(shè)計(jì)、軟件工程、XML程序設(shè)計(jì)、SSH框架、金融市場(chǎng)學(xué)、ERP財(cái)務(wù)管理、管理信息系統(tǒng)、投資銀行學(xué)、商業(yè)銀行學(xué)、國(guó)際金融管理、畢業(yè)設(shè)計(jì)及項(xiàng)目綜合實(shí)訓(xùn)等專(zhuān)業(yè)課程。

      數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò)、計(jì)算機(jī)組成原理、操作系統(tǒng)原理、數(shù)據(jù)庫(kù)原理及應(yīng)用、軟件工程、軟件測(cè)試等計(jì)算機(jī)基礎(chǔ)理論課程;

      網(wǎng)頁(yè)制作、程序設(shè)計(jì)Java、JSP程序設(shè)計(jì)、J2EE程序設(shè)計(jì)、XML程序設(shè)計(jì)、Ajax程序設(shè)計(jì)、SSH框架、Android手機(jī)開(kāi)發(fā)、Linux+PHP+MySQL程序設(shè)計(jì)、SQL Server數(shù)據(jù)庫(kù)、Linux操作系統(tǒng)、UML系統(tǒng)分析與設(shè)計(jì)、軟件項(xiàng)目管理、行業(yè)標(biāo)準(zhǔn)與規(guī)范、IT服務(wù)管理、IT職業(yè)英語(yǔ)、畢業(yè)設(shè)計(jì)及項(xiàng)目綜合實(shí)訓(xùn)等專(zhuān)業(yè)課程

      第五篇:算法設(shè)計(jì)與分析學(xué)習(xí)心得

      算法設(shè)計(jì)與分析學(xué)習(xí)心得

      班級(jí):物聯(lián)網(wǎng)1201 姓名:劉瀟 學(xué)號(hào):1030612129

      一、實(shí)驗(yàn)內(nèi)容:

      這學(xué)期的算法與設(shè)計(jì)課,老師布置了這四個(gè)問(wèn)題,分別是貨郎擔(dān)問(wèn)題,動(dòng)態(tài)生成二維數(shù)組,對(duì)話框下拉列表,排序問(wèn)題。

      二、學(xué)習(xí)掌握:

      基本程序描述:

      (1)貨郎擔(dān)問(wèn)題:貨郎擔(dān)問(wèn)題屬于易于描述但難于解決的著名難題之一,至今世界上還有不少人在研究它。貨郎擔(dān)問(wèn)題要從圖g的所有周游路線中求取具有最小成本的周游路線,而由始點(diǎn)出發(fā)的周游路線一共有(n一1)!條,即等于除始結(jié)點(diǎn)外的n一1個(gè)結(jié)點(diǎn)的排列數(shù),因此貨郎擔(dān)問(wèn)題是一個(gè)排列問(wèn)題。貨郎擔(dān)的程序?qū)崿F(xiàn)了利用窮舉法解決貨郎擔(dān)問(wèn)題,可以在城市個(gè)數(shù)和各地費(fèi)用給定的情況下利用窮舉法逐一計(jì)算出每一條路線的費(fèi)用,并從中選出費(fèi)用最小的路線。從而求出問(wèn)題的解

      (2)費(fèi)用矩陣:費(fèi)用矩陣的主要內(nèi)容是動(dòng)態(tài)生成二維數(shù)組。首先由鍵盤(pán)輸入自然數(shù),費(fèi)用矩陣的元素由隨機(jī)數(shù)產(chǎn)生,并取整,把生成的矩陣存放在二維數(shù)組中,最后把矩陣內(nèi)容輸出到文件和屏幕上。它采用分支界限法,分支限界法的基本思想是對(duì)包含具有約束條件的最優(yōu)化問(wèn)題的所有可行解的解(數(shù)目有限)空間進(jìn)行搜索。該算法在具體執(zhí)行時(shí),把全部可行的解空間不斷分割為越來(lái)越小的子集,并為每個(gè)子集內(nèi)的解計(jì)算一個(gè)下界或上界。動(dòng)態(tài)生成二維n*n的數(shù)組程序利用指針表示數(shù)組的行和列,并逐一分配空間,在輸入n的數(shù)值后,系統(tǒng)自動(dòng)分配空間,生成n*n的數(shù)組,并產(chǎn)生隨機(jī)數(shù)填充數(shù)組,最后將結(jié)果輸入到指定文件中。

      (3)Mfc:在下拉列表框中添加內(nèi)容程序,在下拉列表對(duì)應(yīng)的函數(shù)中利用addstring添加需要的內(nèi)容。首先定義下拉列表框?yàn)閏combox型,并定義其屬性名,利用addstring函數(shù)可以任意添加需要的內(nèi)容。a排序問(wèn)題:快速排序的運(yùn)行時(shí)間與劃分是否對(duì)稱(chēng)有關(guān),其最壞情況發(fā)生在劃分過(guò)程中產(chǎn)生的兩個(gè)區(qū)域分別包含n-1個(gè)元素和1個(gè)元素的時(shí)候。其算法的時(shí)間復(fù)雜度為O(n 2),在最好的情況下每次劃分的基準(zhǔn)恰好為中值,可得其算法時(shí)間復(fù)雜度為O(n㏒n)。算法的實(shí)現(xiàn)和理解和代碼實(shí)現(xiàn)完全是兩回事,想要完全掌握一種算法,需要?jiǎng)邮謱?shí)踐,用代碼實(shí)現(xiàn),才能理解透徹,真正掌握。b對(duì)話框下拉列表:這個(gè)項(xiàng)目簡(jiǎn)單易懂,輕松實(shí)現(xiàn)。三.疑問(wèn)與總結(jié):

      貨郎擔(dān)的問(wèn)題,我認(rèn)為窮舉法相對(duì)比而言是比較初級(jí)的方法,費(fèi)時(shí)耗力,適合在練習(xí)時(shí)選用,但是在實(shí)際問(wèn)題中不建議采用??唆斔箍柣蛘咂绽锬匪惴ㄇ笕∽钚∩蓸?shù)的方法來(lái)解決貨郎擔(dān)的問(wèn)題是更適合現(xiàn)實(shí)解決問(wèn)題的。我認(rèn)為程序可以用switch函數(shù)來(lái)將函數(shù)分成幾個(gè)部分更人性化,比如分為解決問(wèn)題的的選項(xiàng),輸出結(jié)果選項(xiàng),退出程序選項(xiàng)等。再有就是費(fèi)用矩陣的值可以從文件中讀取,而結(jié)果也可以直接放在指定文件中,這樣在實(shí)際應(yīng)用中比較廣泛。

      動(dòng)態(tài)生成二維數(shù)組的程序我認(rèn)為如果按照規(guī)范性,我的方法是中規(guī)中矩的,畢竟再向下延伸,生成三維的數(shù)組,需要三層的指針來(lái)實(shí)現(xiàn)。但是就程序的簡(jiǎn)化程度和計(jì)算機(jī)處理時(shí)間來(lái)說(shuō),我認(rèn)為這樣雙層指針的算法有些太占用內(nèi)存,畢竟要給行和列各分配n個(gè)空間。我通過(guò)與同學(xué)的交流,我發(fā)現(xiàn)可以用1位數(shù)組來(lái)實(shí)現(xiàn)二維的n*n的數(shù)組。首先分配n*n的空間,然后通過(guò)循環(huán)在一行的數(shù)據(jù)達(dá)到n時(shí)自動(dòng)換行。這樣程序得到了一定的簡(jiǎn)化,并且減少了一定的內(nèi)存使用。我認(rèn)為這種方法是比較貼合實(shí)際的。

      四.心得體會(huì)

      在計(jì)算機(jī)軟件專(zhuān)業(yè)中,算法分析與設(shè)計(jì)是一門(mén)非常重要的課程,很多人為它如癡如醉。很多問(wèn)題的解決,程序的編寫(xiě)都要依賴它,在軟件還是面向過(guò)程的階段,就有程序=算法+數(shù)據(jù)結(jié)構(gòu)這個(gè)公式。算法的學(xué)習(xí)對(duì)于培養(yǎng)一個(gè)人的邏輯思維能力是有極大幫助的,它可以培養(yǎng)我們養(yǎng)成思考分析問(wèn)題,解決問(wèn)題的能力。

      如果一個(gè)算法有缺陷,或不適合某個(gè)問(wèn)題,執(zhí)行這個(gè)算法將不會(huì)解決這個(gè)問(wèn)題。不同的算法可能用不同的時(shí)間、空間或效率來(lái)完成同樣的任務(wù)。一個(gè)算法的優(yōu)劣可以用空間復(fù)雜性和時(shí)間復(fù)雜度來(lái)衡量。算法可以使用自然語(yǔ)言、偽代碼、流程圖等多種不同的方法來(lái)描述。計(jì)算機(jī)系統(tǒng)中的操作系統(tǒng)、語(yǔ)言編譯系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)以及各種各樣的計(jì)算機(jī)應(yīng)用系統(tǒng)中的軟件,都必須使用具體的算法來(lái)實(shí)現(xiàn)。算法設(shè)計(jì)與分析是計(jì)算機(jī)科學(xué)與技術(shù)的一個(gè)核心問(wèn)題。因此,學(xué)習(xí)算法無(wú)疑會(huì)增強(qiáng)自己的競(jìng)爭(zhēng)力,提高自己的修為,為自己增彩。

      下載奇數(shù)階魔方陣算法分析word格式文檔
      下載奇數(shù)階魔方陣算法分析.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        LU分解MatLab算法分析

        最近矩陣分析老師出了一道題目作為作業(yè),是一道程序題,題目是對(duì)A矩陣做LU分解,要求能對(duì)A實(shí)現(xiàn)PA=LU的分解,并最終輸出L,U,P矩陣。先來(lái)解讀下題目,寥寥幾句話,里面囊括的信息量卻不少,然......

        算法設(shè)計(jì)與分析試題1

        演講稿 工作總結(jié) 調(diào)研報(bào)告 講話稿 事跡材料 心得體會(huì) 策劃方案 算法設(shè)計(jì)與分析試題1 一、單選題(每題2分,共40分) 1、0518號(hào)臺(tái)風(fēng)“達(dá)維”過(guò)后,要對(duì)各個(gè)單位捐款救災(zāi)情況進(jìn)行分組......

        算法分析與設(shè)計(jì)知識(shí)點(diǎn)總結(jié)

        第一章 概述 算法的概念:算法是指解決問(wèn)題的一種方法或過(guò)程,是由若干條指令組成的有窮序列。 算法的特征: 可終止性:算法必須在有限時(shí)間內(nèi)終止; 正確性:算法必須正確描述問(wèn)題的求......

        數(shù)據(jù)結(jié)構(gòu)與算法分析總結(jié)5則范文

        數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)與分析 談到計(jì)算機(jī)方面的專(zhuān)業(yè)課程,我覺(jué)得數(shù)據(jù)結(jié)構(gòu)算是一門(mén)必不可少的課了,它是計(jì)算機(jī)從業(yè)和研究人員了解、開(kāi)發(fā)及最大程度的利用計(jì)算機(jī)硬件的一種工具。數(shù)......

        小波分析算法資料整理總結(jié)

        一、小波分析基本原理: 信號(hào)分析是為了獲得時(shí)間和頻率之間的相互關(guān)系。傅立葉變換提供了有關(guān)頻率域的信息,但有關(guān)時(shí)間的局部化信息卻基本丟失。與傅立葉變換不同,小波變換是通......

        092 建筑耗熱量穩(wěn)態(tài)算法分析

        穩(wěn)態(tài)計(jì)算方法計(jì)算建筑耗熱量指標(biāo)中的幾個(gè)問(wèn)題清華大學(xué)建筑節(jié)能研究中心燕達(dá)、張野、劉燁、李婷、吳如宏摘要標(biāo)準(zhǔn)上給出的計(jì)算建筑耗熱量指標(biāo)的穩(wěn)態(tài)算法,包括通過(guò)圍護(hù)結(jié)構(gòu)......

        林場(chǎng)先進(jìn)性教育活動(dòng)分析評(píng)議階階段工作總結(jié)

        自全縣召開(kāi)分析評(píng)議階段動(dòng)員大會(huì)以來(lái),在縣先進(jìn)性教育活動(dòng)辦公室的正確領(lǐng)導(dǎo)和督導(dǎo)組的具體指導(dǎo)下,我場(chǎng)在第一階段學(xué)習(xí)培訓(xùn)的基礎(chǔ)上,嚴(yán)格按照分析評(píng)議階段實(shí)施方案的規(guī)定和要求,狠......

        格雷馬斯矩形方陣分析《第五元素》

        就整個(gè)影片本身來(lái)分析,好人和壞人有著十分明顯的對(duì)立,好人是以柯本、麗露為代表的,保護(hù)人類(lèi)世界的英雄人物,相對(duì)立的壞人就是對(duì)整個(gè)人類(lèi)生存產(chǎn)生威脅的影子先生和它在地球的代理......