高階語言課程設計報告第二次報告 列舉的優化

2022-05-10 15:23:20 字數 2700 閱讀 9629

實習題目

第二次報告: 列舉的優化

章列舉之

8.1,

8.2,

8.4。

l 對於8.2

題,可否繼續改進?試用

devc++

編寫執行改進版程式,並描述你的改進演算法,並貼上**及注釋。

l 完成acm

俱樂部作業:

2015cup實習2

列舉的優化

l 描述你的演算法,注釋你的程式。

l 注意勿抄襲:全系統自動判定抄襲,一旦抄襲,0

分。一、實習目的:深入學習列舉的優化

二、要求描述8.2,8.4題的解題演算法對你的啟發,8.2例題的演算法有無可改進之處?描述你的改進演算法,並貼上**及注釋。

啟發:儘量減少計算量,增大每一次迴圈的跨度,從而減少迴圈次數;利用數學公式推導,使已知量的關係更加直接,避免每次的重複計算。

三、針對你的每一道題目:

1.演算法描述。

直角三角形數量:通過對直角三角形的深度了解,可將其邊的範圍進一步縮小,進而減少計算量,比如最長的邊的長度是周長的二分之一到三分之一之間,大大減小了計算量,而第二長的邊必然大於其和最小邊的和的二分之一,且小於最大邊,減少了計算量。

0~9排列整除:直接通過for   if 的重複,乙個乙個的比並沒有太大的計算量,直接通過了。

2.你的**及注釋。

8.2優化:

#include

int main()

int p,e,i,d,j,no=1;

scanf("%d %d %d %d", &p, &e, &i, &d);

while(p!=-1 && e!=-1 && i!=-1 && d!=-1)

j=(33-(d+1-i)%33)+d+1;        /*不用迴圈,減少迴圈,同時將33前移先運算*/

for( ; j<21252; j=j+33)

if ((j-e)%28==0)

break;

for( ; j<21252; j=j+33*28)      /*33*28數值相對較大*/

直角三角形數量

#include

int main()

int t,a,a,b,c,n,i; //a為周長

scanf("%d",&t);

getchar();

while(t) //測試次數

n=0;

scanf("%d",&a);

for(c=(a/2);c>(a/3);c--) //最大邊限制

0~9排列整除

#include

int main()

int a,b,c,d,e,f,g,h,i,j,n=0;

for(a=0;a<10;a++) //每個都從零開始for}}

3.設計及除錯過程遇到的問題及解決方案。

直角三角形數量

並不了解主要的優化方案,自己瞎想,始終想不出來怎麼回事,無奈只好參考別人的思路,看了好幾個都不太能理解,甚至看不懂為什麼這樣做,在看了幾種思路後學會了其中好理解的幾種,挑選最簡易的編寫。

0~9排列整除

毫無困難,順著思路一次性編寫成功。

心得體會和自我對程式的評價。

直角三角形數量

感覺自己的智商捉急啊,或許是不熟悉,或許就是想不到那種方法,不過我覺的還需要積累經驗,看的多了,就會的多了。程式並不難,就是演算法不好想。

0~9排列整除

沒什麼想說的就是以後可以用這樣的方法程式設計。

第二次課程設計實驗報告

飛機遊戲用c語言寫乙個簡單的飛機遊戲,使用者可操控飛機進行移動,射擊,擊中敵機1.控制飛機移動updatewithinput 2.顯示複雜飛機圖案show 3.發射雷射show 4.重構 初始化 startup 5.新式子彈show 6.敵機移動updatewithinput 7.射中敵機updat...

第二次課程設計實驗報告

2019年春第二次課程設計實驗報告 一 實驗專案名稱 貪吃蛇二 實驗專案功能描述 玩家通過控制鍵盤實現小蛇向不同方向的移動,並通過吃食物增加蛇的長度,當小蛇和邊框或自身發生碰撞時遊戲失敗 三 專案模組結構介紹 a.構造小蛇,依據二維陣列canvas high width 的對應元素,若值為0輸出空 ...

2019第二次課程設計實驗報告

生命遊戲這是乙個生命的小遊戲,源 執行為 當某細胞周圍有三個或以上的細胞時,該細胞生存 則若原細胞為生則保持不變,若原細胞為死則轉化為生 若該細胞周圍有兩個細胞為生,則該細胞保持不變 其餘情況下該細胞為死。增加了一塊水源,該處細胞容易生存 增加了可加速可減速可暫停可重新開始的功能。這次上機課明顯比第...