程式設計實踐系列筆記 二

2021-10-04 07:44:20 字數 2832 閱讀 3722

簡單計算題和數制轉換

通過程式問題來理解:

裝箱問題:

​ 已知有6x6的大箱子和1x1,2x2,3x3,4x4,5x5,6x6的木塊,箱子高度和木塊一樣。問:給定各種木塊的數目,求最少需要多少個大箱子來裝

輸入要求:

​ 每行代表乙個訂單,每個訂單有6個用空格分開的資料,分別表示1x1到6x6的產品數量,6個0表示1行為輸入結束

輸出要求:

​ 除輸入的最後一行外,輸入的其他每一行對應著輸出的一行,代表訂單所需的最小包裹數

輸入樣例:

0 0 4 0 0 1

7 5 1 0 0 0

0 0 0 0 0 0

輸出樣例:

2

1

解題思想: 先放大的,再放小的

·6x6的木塊每個占用乙個小箱子 個數為b6

·5x5的木塊每個占用乙個小箱子餘下11個1x1的空格 個數為b5

·4x4的木塊每個占用乙個小箱子,餘下5個2x2的空格 個數為b4

·3x3的木塊每4個占用新乙個箱子,不足四個也占用乙個箱子,分情況餘下不同數目的空格 個數為b3

·2x2木塊先填空格,空格不足再開新箱子,每9個2x2的木塊佔乙個新箱子 個數為b2

·1x1木塊先填空格,空格不足再開新箱子,每36個佔乙個新箱子 個數為b1

s=箱子數

①:先放好6x6,5x5,4x4,3x3的木塊

s=b6+b5+b4+(b3+3)/4;

②:構造計算 再把2x2是木塊塞入3x3木塊的箱子裡設定,設定乙個陣列

int contain[4]=;

contain[i]表示當3x3木塊的數目除以4的餘數分別是0,1,2,3時,會產生多少個能放2x2木塊的空格。

用陣列記錄比if else更加方便。放完2x2木塊後,再算一下有多少個1x1的空格,如果不能把1x1的木塊都填進去,就需要再加乙個箱子。

#include

intmain()

;while(1

)return0;

}

題目描述:

某校大門外長度為l 的馬路上有一排樹,每兩顆相鄰的樹之間的間隔是1公尺,我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置,數軸上的每個整數點,即0,1,2…l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹移走後,馬路上還有多少顆樹。(l<=100000)

輸入要求:a(1

輸入兩個整數l(1<=l<=10000)和m(1<=m<=100),l代表馬路的長度,m代表區域的數目,l和m之間用乙個空格隔開,接下來的m每行包含兩個不同的整數,用乙個空格隔開,代表乙個區域的起始點和終止點的座標。

輸出要求:

500 3

150 300

100 200

470 471

輸出樣例:
298
**展示:
#include

intmain()

,i,j,l,m,x,y;

while

(scanf

("%d %d"

,&l,

&m!=

eof)

) j=0;

for(i=

0;i(a[i]!=1

) j++

;//代表剩下的樹木

printf

("%d\n"

,j);

}}

·十進位制和二進位制相互轉換

·二進位制和八進位制,十六進製制相互轉換

·任意進製的相互轉換

題目描述:

​ 寫一段程式讀入三個整數p,q,r然後確定乙個進製b,使得p*q=r,如果b有很多選擇輸出最小的那乙個。如果沒有合適的進製,則輸出0;

輸入描述:

​ 輸入有t組測試樣例。t在第一行給出。每一組測試樣例佔一行,包含三個整數p,q,r。p,q,r的所有位都是數字,並且1<=p,q,r<=100,000

輸出描述:

​ 對於每個測試樣例輸出一行。該行包括乙個整數,即使得p*q=r成立的最小的b。如果沒有合適的b,則輸出0

輸入樣例:

3

6 9 42

11 11 121

2 2 2

輸出樣例:
13

30

解題思路:

​  選擇乙個進製b,然後按照該進製把三個數轉化為十進位制,然後判斷等數是否成立

​ 分別用乙個字元型陣列儲存p,q,r個位數字符號。先以字串的方式讀入p,q,r,然後轉換為十進位制。

#include

#include

inttoten

(char

*x,int b)

;//b代表了不同的進製我們通過建構函式來傳入不同的進製,然後轉換成了十進位制

intmain()

}}}int

toten

(char

*x,int b)

return ret;

}

反思:

對於簡單的數值轉換,我們要考慮到它的base ,以及從大到小,或者從小到大,是否覆蓋,是否重疊的設計思路。

數值轉換是我們在解決一系列問題,使用演算法的重中之重。

《程式設計實踐》筆記

名字 變數的作用域越大,它的名字所攜帶的基本資訊就應該越多。全域性變數使用具有說明性的文字,區域性變數用短名字。因為全域性變數可以出現在整個程式任何地方,因此它們的名字應足夠長,具有足夠的說明性,以便讀者能夠記得它們是幹什麼用的。按常規方式使用的區域性變數可以採用極短的名字。例如,i j做迴圈變數,...

python程式設計從入門到實踐 筆記二

1.遍歷迴圈ls for i in ls 原理是先獲取ls中第乙個元素儲存到i中,進行冒號後面的操作 然後再返回,將ls中第二個元素儲存到i中,再進行冒號後面的操作。對資料集進行整體操作。2.換行符 n 插入空行 3.for迴圈後面沒有縮排的 都只執行一次。避免縮排錯誤。忘記縮排 indentati...

極限程式設計系列4 開發實踐 計畫

上次我們講到了關於團隊建設,這次呢,我們來講講 開發實踐,這裡我想從三個方面來闡述,計畫 程式設計和測試 極限程式設計認為計畫是一種有必要的浪費,從浪費的角度來看的話,我們可以認為,浪費有時候是必須的,但是做為乙個中小型的專案 xp主要針對於中小型專案 充分徹底的計畫就顯得不可行了,根據守護者的經驗...