1. 程式人生 > >藍橋杯複習筆記

藍橋杯複習筆記

BASIC 3 字母圖形

這一題可以簡化思路,規律從兩個迴圈中獲得(i - j)

BASIC 10 十進位制轉16進位制

十進位制轉x進位制的題目慣用模板,注意如果要轉的進位制超過10,要考慮字母的情況。

  if (a == 0) 
  {        
    cout << "0";    
  } 
  else 
  {        
       while (a != 0) 
           {            
           if (a % x >= 10)                
                b[
i++] = a % 16 + 'A' -10; else b[i++] = a % 16 + '0'; a = a / 16; } }
BASIC 15 字串對比

大小寫轉換

 tolower() toupper()
BASIC 18 矩形面積交

判斷兩個舉行是否重合,假設x1,y1是矩形1的左下角,x2,y2是矩形1的右上角。x3,y3是矩形2的左下角,x4,y4是矩形2的右上角。

if((x2 < x3 && x1 < x3) || (y2 < y3 && y1 < y3) || (x4 < x1 && x3 > x1) || (y4 < y1 && y3 < y1))

如果這個要是滿足了,那麼說明就不重合。

算重合面積,只要把兩個x軸上的中間值,y軸上的中間值相減、相乘即可。

BASIC 22 FJ的字串

掌握遞推,要先寫出公式。

 f(n) = A;   n = 1;
 f(n) = f(n - 1) + (char)(n + 'A' - 1) + f(n - 1); n > 1
string dfs(int n) 
{    
   if(n == 1) {        
   return "A";    
   } else {        
   return dfs(n - 1) + (char)(n + 'A' - 1) + dfs(n - 1);    
   } 
 }
BASIC 25 回形取數

把訪問過的點標記成-1,這樣遇到-1就轉彎

BASIC 27 2n皇后問題

先把算出n皇后的可能,每次條件已成立,把這n個皇后算成障礙物,再給來一遍bfs。

BASIC 29 高精度加法

加法:先把兩個數都倒過來一下,這樣方便計算。

引申乘法:

https://blog.csdn.net/FGY_u/article/details/83999413

ALGO 4 節點選擇

用樹形二叉樹進行解題,樹形二叉樹更詳細的解釋見
https://blog.csdn.net/txl199106/article/details/45373507

ALGO 5 最短路徑 ??

無負邊,可以用迪傑斯特拉演算法。
存在負邊的話,用Floyd或者SPFA。

ALGO 9 操作格子

線性樹

ALGO 11 瓷磚鋪放

用遞迴的時候記得要解除前一狀態。
這題用動態規劃的方法也可以,關鍵是要弄清楚其中的動態方程。

v[i] = v[i-1] + v[i-2];

後一個等於前一個(v[i - 1] + v[i - 2] )是因為當前等於前一個長度加1,前前個長度加2.

複習了迪傑斯特拉演算法

PAT_A Public Bike Management