急求!C語言遞推問題

時間 2022-03-06 13:29:00

1樓:匿名使用者

倒著想,我先舉個例子,比如n=10 x=3 y=4

那麼 我要到在第10階,一種辦法是從第7階走x=3步到10,另一種從第6階走y=4步到10

這個問題化為走到7階和6階要如何走

再看7階。一種辦法是從第4階走x步到7階,另一種從第3階走y=4步到7

再看6階。一種辦法是從第3階走x步到6階,另一種從第2階走y=4步到6.但考慮到處若從2階走4到6的話,2階是不可能到達的。因為只能走3或4階,所以這裡刪掉這種情況

就剩下走到第4階和第3階的走法了

顯然它們各自只有一種走法

最後就是

3+3+4

3+4+3

4+3+3

共3種這種思想就是倒著想,向前推進。再逆轉過來。有點類似動態規劃

化為一般的思想

走到n階有幾種走法的問題可以轉化為走到n-x與走到n-y階之和(x!=y)

而同理n-x要看n-2x與n-x-y的走法之和

n-y要看n-x-y與n-2y之和

依次下去。最終結束的條件就是n-ax或n-by或n-cx-dy中任何乙個小於給定的x或y說明此種走法不通。那麼去掉這種走法且結束。

若開始的時候上述條件就成立則為sorry

2樓:曉風殘月

for(x=0;x<=n;x++)

for(y=0;y<=n;y++)

if(x+y<=n && n%(x+y)==0)num++;//成功登山+一次

其實沒怎麼看懂你問的問題,感覺管台階多少,應該都不會失敗的x=1 y=0 再怎麼跳都能上去 可能我理解有誤

3樓:

你逆推,假如它已經到達n級台階處,現在它要後退,有兩種可能,1 後退x級 2後退y級。當它處於後退一次之後的地方時,又有兩種可能的後退可能。就這樣不停的後退下去,再加上退出條件就可以了 修改下,正推逆推都一樣的,還有不可達的情況,你只要在退出條件裡做下文章就可以,假如她退到那裡是n<0的話就是不可達,n==0的話就是可達。

C語言陣列問題 急求,C語言陣列問題

迴圈輸入10個整數,同時統計非法數字個數。並初始化計數陣列的值為 1。遍歷陣列統計各數字出現的次數。include int main void int count 10 int i,vn 0 for i 0 i 10 i int j,n for i 0 i 10 i for j i 1 j 10 j...

c語言難題急求,C語言難題急求

你的 主要有兩個問題 1.結構體有指標成員的情況下,你做了淺拷貝,導致交叉鏈結。name是個指標成員,b a操作會導致b.name a.name,這只是乙個指標賦值,這兩個指標指向了同一塊記憶體,所以乙個變了導致另乙個也會跟著變 2.c語言引數是單向值傳遞,所以f函式裡的p是b.name的副本,但他...

高分急求,c語言問題,求高手解答

include int main 11 int max int x,int y x y是形參12 三個 d,兩個位址 xy是max函式的形參,只是佔位置用的,z是max函式的私有變數,只能在本函式使用 ab是實參,傳遞給max函式處理 第4行是函式宣告,告訴編譯器有這個函式,xy可以省略,應該放到m...

c語言程式設計問題求助急,C語言程式設計問題求助 急!

暄和 include void main int num printf input m scanf d num if isperfect num printf d is a perfect number.n num else printf d is not a perfect number.n nu...

求問c語言簡單鍊錶的問題急

for p head p next null p p next 迴圈檢查,最後把p指向鍊錶的最後乙個節點。p next q 在鍊錶的最後乙個節點後面新增乙個新節點q。q next null q成為鍊錶的最後乙個節點,所以它後面沒有節點,即為null printf 此資訊已新增 return 整段 的...