《程式設計之美》 中國象棋將帥問題

2021-06-16 12:19:43 字數 258 閱讀 7589

即將面臨找工作,最近在看《程式設計之美》這本書。自己能力有限所以覺得有些題目難度不小,但仍覺受益匪淺,有時間一定再讀幾遍。下面是關於「中國象棋將帥問題」的一些心得:

書中給出的演算法的精妙之處這裡不再贅述,給出自己的想法:

原理與書中給出演算法相同,通過迴圈實現。對其中的任意乙個位置k,其餘8個位置都可以用k與1到8這8個數字的和對9取模來表示(其中和為0的情況要特殊處理)。問題的關鍵在於除了加3與加6兩個位置外其餘6個位置均為合法位置,所以程式將直接列印這6個合法位置。**:

程式設計之美 中國象棋將帥問題

首先,我們歸納總結一下展開原理,對於 a b i 我們可以用如下公式展開 loop1 i b loop2 i b a 其中loop1是內層迴圈,loop2是外層迴圈 那麼如果 a 本身就是 k j 組成的呢?由於 k j i b 套用公式得到 loop1 i b j loop2 i b j k 由此...

程式設計之美 中國象棋將帥問題

程式設計之美1.2,題目不再重複了,這裡主要研究方法二。核心思想就是兩重迴圈分別從1到9,如果兩個變數處於同一直線則跳過,不然就列印出兩個變數。題目的要求在於只能用乙個位元組來儲存,所以就需要空間上進行巧妙的變換。兩個變數從1到9,其實只有9 9 81種狀態,理論上乙個位元組儲存已經綽綽有餘了。題中...

程式設計之美 中國象棋將帥問題

a表示 將 b表示 帥 用1 9表示a b的座標。請寫出乙個程式,輸出a b所有合法位置。要求在 中只能使用乙個位元組儲存變數。用乙個unsigned char型別變數儲存a b的位置,前4bit表示a的位置,後4bit表示b的位置。include define half bits length 4...