首先,我們歸納總結一下展開原理,
對於 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
由此可以得出n重時的公式,假設 an * a(n-1) * ....... * a3 * a2 * a1 = n
loop1=n%a1
loop2=(n/(a1))%a2
loop3=(n/(a1a2))%a3
.....
loopn=(n/(a1.....an))%an
則對於給定的 an * a(n-1) * ....... * a3 * a2 * a1 = n ,展開式是 ( nzk 意思是n的展開 )
nzk = (n/(a1.....an))%an + " , "+ ..... (n/(a1a2))%a3 + " , " + (n/(a1))%a2 + " , " + n%a1
得出nzk =((n/(a1.....an))%an + " , "+ ..... (n/(a1a2))%a3 + " , " + (n/(a1))%a2 )+ " , " + n%a1
得出nzk = (an * a(n-1) * ....... * a3 * a2)zk + " , " + n%a1
得出nzk = (n/a1)zk + " , " + n%a1
至此得出了遞迴公式,
n的展開式 = (n/(n的最後乙個因數)) 的展開式 + ( n 模(n的最後乙個因數))
《程式設計之美》 中國象棋將帥問題
即將面臨找工作,最近在看 程式設計之美 這本書。自己能力有限所以覺得有些題目難度不小,但仍覺受益匪淺,有時間一定再讀幾遍。下面是關於 中國象棋將帥問題 的一些心得 書中給出的演算法的精妙之處這裡不再贅述,給出自己的想法 原理與書中給出演算法相同,通過迴圈實現。對其中的任意乙個位置k,其餘8個位置都可...
程式設計之美 中國象棋將帥問題
程式設計之美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...