http://acm.nyist.net/JudgeOnline/problem.php?pid=90

來源:互聯網
上載者:User
整數劃分時間限制:3000 ms | 記憶體限制:65535 KB難度:3
描述
將正整數n表示成一系列正整數之和:n=n1+n2+…+nk,
其中n1≥n2≥…≥nk≥1,k≥1。
正整數n的這種表示稱為正整數n的劃分。求正整數n的不
同劃分個數。
例如正整數6有如下11種不同的劃分:
6;
5+1;
4+2,4+1+1;
3+3,3+2+1,3+1+1+1;
2+2+2,2+2+1+1,2+1+1+1+1;
1+1+1+1+1+1。

輸入
第一行是測試資料的數目M(1<=M<=10)。以下每行均包含一個整數n(1<=n<=10)。
輸出
輸出每組測試資料有多少種分法。
範例輸入
16
範例輸出
11
構造f(n,m)表示要劃分的數為n,最大加數為m
1>當n和m任意一個小於1時結果肯定都為0
2>當n和m任意一個為1時結果肯定為1,因為n為1時只有一個1,m為1時全部為1即可,,,,
3.>當m大於n時要修改最大加數
4>當m等於n時可以轉化為最大加數為n-1加上只有自己這一種情況。。。
5>當n大於m時可以轉化為已經確定最大加數為m和最大加數為m-1.。
AC代碼
#include<stdio.h>#include<string.h>int f(int x,int y){if(x<1||y<1) return 0;if(x==1||y==1) return 1;if(x<y) return f(x,x);if(x==y) return f(x,y-1)+1;return f(x,y-1)+f(x-y,y);}int main(){int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);printf("%d\n",f(n,n));}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.