/*
瓷磚覆蓋地板:
原來的地板鋪有n*m塊正方形瓷磚,商店只提供長方形瓷磚,現在一塊長方形瓷磚相當於於原來的兩塊正方形瓷磚,能否用1*2的瓷磚去覆蓋n*m的地板呢
本質:斐波那契遞推數列公式
f(i) = f(i-1) + f(i-2)
分析:n*m的地板有以下幾種可能:
1如果n=1,m為偶數的話,顯然1*2的瓷磚可以覆蓋1*m的地板,需要m/2塊瓷磚
2如果n*m為奇數,也就是n和m都為奇數,則肯定不能用1*2的瓷磚去覆蓋它
證明:假設能共用k快1*2的瓷磚去覆蓋n*m的地板,因為瓷磚總面積為2k為偶數,而地板總面積為n*m為奇數,面積不符
3n和m中至少有乙個為偶數,不放設m為偶數,既然可以用1*2的地板覆蓋1*m的地板,就可以重複n次覆蓋1*m的做法,必定可以覆蓋n*m的做法
其實一定要按照數學思維,對各種情況加以分析
擴充套件問題:
1求用1*2的瓷磚覆蓋2*m的地板有多少種方式?
參見斐波那契數列
輸入:1(n) 4(m)
3 7
3 8
4 8
輸出:yes
noyes
*/#include bool cover(int irow,int icol)
else//如果長或者寬中至少有乙個為偶數,就可以覆蓋 }
void process()
else
}}int main(int argc,char* argv)
程式設計之美 第四章 數字之趣 4 10數字啞謎和回文
數字啞謎和回文 1神奇的9位數。能不能找出符合如下條件的9位數 這個數包括了1 9這9個數字 這個9位數的前n位都能被n整除,若這個數表示為abcdefghi,則ab可以被2整除,abc可以被3整除.abcdefghi可以被9整除 2有這樣乙個乘法算式 人過大佛寺 我 寺佛大過人 這裡面每乙個字都代...
第四章 程式設計
選擇語言的原則 最少的工作量原則 最少技巧性原則 最少錯誤原則 最少維護原則 減少記憶原則 總原則 先求正確後求快 先求清晰後求快 求快不忘保持程式正確性 保持程式整潔以求快 不要因效率而犧牲清晰 好程式標準 易於測試和除錯 易於維護 易於修改 設計簡單 高效率結構化程式設計主要包括兩方面 在編寫程...
程式設計之美 第四章 數字之趣 4 4點是否在三角形內
點是否在三角形內 如果乙個二維座標系中,已知三角形頂點的座標,那麼對於座標系中的任意一點,如何判斷該點是否在三角形內 點在三角形邊線上也可 假設三角形頂點的座標為abc 逆時針 需要判斷點d是否在該三角形內。分析 利用垂涎的交點可以判斷。如果點d在三角形內,所有的垂線交點都在三角形的邊線之內。如果點...