遞迴解整數劃分問題

來源:互聯網
上載者:User

#include <stdio.h></p><p>int a[11], In, now;</p><p>void f(int n, int m, int k)<br />{<br />int i, sum=0;<br />if(n==1 || m==1)<br />{<br />for(i=0; i<n; i++)<br />a[k++] = 1;<br />for(i=0; i<k; i++)<br />sum+=a[i];<br />if(a[0] == now-1)<br />{<br />now -= 1;<br />printf("/n");<br />}<br />for(i=0; i<k-1; i++)<br />printf("%d+", a[i]);<br />printf("%d", a[k-1]);<br />if((In-a[0]+1)!=k)<br />printf(",");<br />return;<br />}<br />else if(n<m)<br />{<br />f(n ,n, k);<br />}<br />else if(n==m)<br />{<br />a[k] = n;<br />for(i=0; i<=k; i++)<br />sum+=a[i];<br />if(sum==In)<br />{<br />if(a[0] == now-1)<br />{<br />now -= 1;<br />printf("/n");<br />}<br />for(i=0; i<k; i++)<br />printf("%d+", a[i]);<br />printf("%d", a[k]);<br />if((In-a[0])!=k)<br />printf(",");<br />}<br />f(n, n-1, k);<br />}<br />else<br />{<br />a[k] = m;<br />f(n-m, m, k+1);<br />f(n, m-1, k);<br />}<br />}</p><p>void main()<br />{<br />while(scanf("%d",&In))<br />{<br />now = In;<br />f(In,In, 0);<br />printf("/n");<br />}<br />}<br />

 

 

部分結果:

 

6<br />6<br />5+1<br />4+2,4+1+1<br />3+3,3+2+1,3+1+1+1<br />2+2+2,2+2+1+1,2+1+1+1+1<br />1+1+1+1+1+1<br />7<br />7<br />6+1<br />5+2,5+1+1<br />4+3,4+2+1,4+1+1+1<br />3+3+1,3+2+2,3+2+1+1,3+1+1+1+1<br />2+2+2+1,2+2+1+1+1,2+1+1+1+1+1<br />1+1+1+1+1+1+1<br />8<br />8<br />7+1<br />6+2,6+1+1<br />5+3,5+2+1,5+1+1+1<br />4+4,4+3+1,4+2+2,4+2+1+1,4+1+1+1+1<br />3+3+2,3+3+1+1,3+2+2+1,3+2+1+1+1,3+1+1+1+1+1<br />2+2+2+2,2+2+2+1+1,2+2+1+1+1+1,2+1+1+1+1+1+1<br />1+1+1+1+1+1+1+1<br />9<br />9<br />8+1<br />7+2,7+1+1<br />6+3,6+2+1,6+1+1+1<br />5+4,5+3+1,5+2+2,5+2+1+1,5+1+1+1+1<br />4+4+1,4+3+2,4+3+1+1,4+2+2+1,4+2+1+1+1,4+1+1+1+1+1<br />3+3+3,3+3+2+1,3+3+1+1+1,3+2+2+2,3+2+2+1+1,3+2+1+1+1+1,3+1+1+1+1+1+1<br />2+2+2+2+1,2+2+2+1+1+1,2+2+1+1+1+1+1,2+1+1+1+1+1+1+1<br />1+1+1+1+1+1+1+1+1<br />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.