實習題目
第二次報告: 列舉的優化
章列舉之
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第二次課程設計實驗報告
生命遊戲這是乙個生命的小遊戲,源 執行為 當某細胞周圍有三個或以上的細胞時,該細胞生存 則若原細胞為生則保持不變,若原細胞為死則轉化為生 若該細胞周圍有兩個細胞為生,則該細胞保持不變 其餘情況下該細胞為死。增加了一塊水源,該處細胞容易生存 增加了可加速可減速可暫停可重新開始的功能。這次上機課明顯比第...