1. 程式人生 > >演算法競賽入門經典第四章習題

演算法競賽入門經典第四章習題

習題4-1:

題目大意就是:

一個象棋殘局,紅方有n(2<=n<=7) 個棋子,黑方只有一個將,紅方除了帥,還可能有車,馬,炮,並且要考慮“蹩馬腿”,輸入所有棋子的位置,保證局面合法並且紅方已經將軍,判斷紅方是否已經將黑方將死,

解題思路:

用一個棋盤儲存紅方可以打到的地方,看黑方將是否有其餘的地方去,在豎直方向只要判斷將能去的大方就可以,也就可以將帥和車一起判斷,

習題4-2:

題目大意:

有n行n列(2<=n<=9) 的小圓點,還有m條線段連線其中的一些黑點,統計這些線段連線成多少正方形的個數(每種邊長分別統計);

解題思路:

模擬,用兩個陣列模擬行和列,統計時列舉定點掃描

題解連線:習題4-2,UVA 201

習題4-4:

題目大意:

給兩個正6面體,問二者是否等價,每個面都用6個字母表示;

解題思路:

固定一個面旋轉,有四種可能,一共固定6個面;

題解連線:習題4-4,UVA 253

習題4-5:

題目大意:

給你幾個IP求給出ip範圍內的最小的ip,(ip範圍,可以用一個網路地址和一個子網掩碼描述一個ip,其中子網掩碼包含32個二進位制,前32-n位為1,後n位為0,網路地址的前32-n位任意,後n位為0,所有前32-n位和網路地址相同的ip都屬於此網路)

題目連線here

解題思路:

ip的四個部分分別處理,每一部分找出最大值的最小值,然後判斷是其二進位制最後幾位不同,得出子網掩碼;

用任意一個IP與子網掩碼進行按位與運算得出最小IP;

題解連線:習題4-5,UVA 1590

習題4-8:

題目大意:

課堂上有n(n<=10)個學生,每個學生都有一個“睡眠-清醒“”週期,其中第i個學生清醒Ai分鐘後睡Bi分鐘,然後重複(1<=Ai,Bi<=5),初始時第i個學生處於他的週期的第Ci分鐘,每個學生臨睡前檢視全班睡覺人數是否嚴格大於清醒人數,只有這個條件滿足時才睡覺,否則堅持聽課Ai分鐘後再次檢查這個條件,問多長時間後全班都清醒,

解題思路:

模擬整個過程直到全部清醒或者時間足夠長,用Ci表示在週期中的狀態時間

題解連線:習題4-8,UVA 12108

習題4-10:

題目大意:

有n*m(1<=n,m<=30)的網格,每個格子是邊長為10米的正方形,網格四周是無限大的牆壁。輸入每個格子的海拔高度,以及網格的內雨水的總體積,輸出水位的海拔高度以及有多少百分比的區域內有水,

解題思路:

題目挺簡單的但是一開始沒弄還wa了幾發,還是太弱了,把輸入的格子排序,從小到大算加上水的高度以後比下一塊高不高