看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《max1147 (浩介)》之銘言: : 1. for(i=1;i<=n;i++) : 2. for(j=1;j<=i;j++) : 3. for(k=1;k=j;k++) : 4. x++; : 請問這程式各行執行幾次 不知你題目是否有打錯 第三行應該是k<=j ? 我先假設你打錯好了 這題其實應該有幾種不同解法 先說最直接的 就是硬算 題目可以轉成以下這樣: n i j Σ Σ Σ 1 i=1 j=1 k=1 n i = Σ Σ j i=1 j=1 n = Σ (i+1)i/2 i=1 n = Σ 0.5*i^2 + 0.5*i i=1 n n = 0.5 Σ i^2 + 0.5Σ i i=1 i=1 = 0.5n(n+1)(2n+1)/6 + 0.5(n)(n+1)/2 = n(n+1)(n+2)/6 ==================以上是第一種算法================== 再來也可以用另一個看法 其實原題意的i,j,k取法 可以令 x1 = i , x2 = j-i , x3 = k-j 原題就會變成求 x1+x2+x3=n 其中x1≧0 , x2≧0 , x3≧0 的整數解個數 n n+2 (n+2)(n+1)n 那解的個數就是H = C = ------------- = n(n+1)(n+2)/6 3 3 3! ==================以上是第二種算法================== 以上兩種算法提供你參考囉 第二種比較不好想 不過想出來就幾乎不用算了 尤其維度如果再高一點 第一種就會變的很難算 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.138.191 ※ 編輯: jameschou 來自: 114.45.138.191 (10/10 20:47)