1. 程式人生 > >簡單的劃分數問題

簡單的劃分數問題

將整數n分成k份,且每份不能為空,任意兩份不能相同(不考慮順序)。
例如:n=7,k=3,下面三種分法被認為是相同的。
1,1,5; 1,5,1; 5,1,1;
問有多少種不同的分法。

思路:

       動態規劃:

dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
dp [ i-j ]  [ j ]:每一份至少有一個。

dp[i-1][j-1]:有一份是1個。

#include<iostream>
#include<cstdio>
#include<cstring>
typedef long long ll;
/*好久沒打碼,生了*/
ll dp[505][25];
int main ()
{
    int n,k;
    while(~scanf("%d%d",&n,&k)&&(n||k))
    {
        memset(dp,0,sizeof(dp));
        dp[0][0]=1;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=k;j++)
                if(i>=j)
                    dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
        printf("%lld\n",dp[n][k]);
    }
    return 0;
}


相關推薦

有關計數問題的DP 分數

sin art 定義 size popu strong article statistic -m 有n個無差別的物品,將它們劃分成不超過m組。求出劃分方法數模M的余

[HEOI2014]平衡(整數分數)

下課了,露露、花花和萱萱在課桌上用正三稜柱教具和尺子擺起了一個“蹺蹺板”。 這個“蹺蹺板”的結構是這樣的:底部是一個側面平行於地平面的正三稜柱教具,上面 擺著一個尺子,尺子上擺著若干個相同的橡皮。尺子有 2n + 1 條等距的刻度線,第 n + 1 條 刻度線恰好在尺子的中心,且與正三稜柱的不在課桌上的稜完

分數

劃分數  挑戰上的題 *************************************************************************************** 注意是不超過 1、定義dp[i][j]=j的i的劃分總數  j的i劃分

整數劃分-分數(DP動態規劃)

給你一個正整數n,讓你計算出n的m劃分有幾種方法。思路:定義dp[i][j]為i的j劃分,即將i劃分為j個數字之和的方案數。1:當j<=i時,此時,劃分個數不超過i,此時是正常的劃分。     劃分的結果一定只有兩種型別:一種是j個數字,都大於0。另一種是有0,即不夠劃

簡單分數

https://ac.nowcoder.com/acm/contest/322/L 題解:很簡單吧??? /* *@Author: STZG *@Language: C++ */ #include <bits/stdc++.h> #include<iostream&

nyoj 90 整數劃分【dp分數

整數劃分 時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3 描述將正整數n表示成一系列正整數之和:n=n1+n2+…+nk,  其中n1≥n2≥…≥nk≥1,k≥1。  正整數n的這種表示稱為正整數n的劃分。求正整數n的不  同劃分個數。

牛客網 - 簡單分數(模擬)

題目連結:https://ac.nowcoder.com/acm/contest/322/L 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 John最近對分數很感興趣,在研究分數的

西南民族大學第十屆校賽(同步賽)(L題——簡單分數)

題目描述 John最近對分數很感興趣,在研究分數的加減運算。現在要求計算兩個分數的運算。 輸入描述: 輸入一個正整數T,表示有T組資料 每組資料包括5個整數op,a,b,c,d op為1表示a/b + c/d;op為0表示為a/b – c/d 其中1 <=

計算整數的分數

問題描述: 問題描述 :將一正整數劃分成一系列的正整數之和。 N=n1+n2+……+nk(n1>=n2>=n3….>=nk) 被稱為正整數n的一個劃分,一個正整數存在著不同的劃分。例如6 6=6 6=5+1 6=4+2 6=4+1

題目 10 分數

#include<stdio.h> int sum=0,n; int p(int a,int b) { if(a==0) sum++; int i; if(a>0) { for(i=n; i>=1; i--) { if(a>=i&&b<=i) { p(a-

NYOJ 571 —— 各種分數

時間限制:1000 ms  |  記憶體限制:65535 KB 描述 整數劃分是一個經典的問題。請寫一個程式,完成以下要求。 輸入每組輸入是兩個整數n和k。(1 <= n <= 50,

NYOJ571-整數劃分(三) | 分數+DP

描述 整數劃分是一個經典的問題。請寫一個程式,完成以下要求。 輸入 多組輸入資料。 每組輸入是兩個整數n和k。(1 <= n <= 50, 1 <= k <=

迴文串最少分數

這個是正向分析字串,覺得比較好理解. 這個問題以後還要補充…… #pragma warning(disable:4996) #include <iostream> #include <algorithm> #inclu

[學習筆記]整數分數

sum 分享 src 完全 n) 前綴 完全背包 整數 -i 定義 P(i)把i劃分成若幹個整數的和的方案數。方案數不同當且僅當所用整數排序後不對應相同(存在某個整數用的次數不同) 求法 都是求前n項的每一項 完全背包 O(n^2) 分塊背包 根據物品大小分塊 小於根號n的

hiho 1515 : 分數調查 簡單bfs

內存 數據 開始 amp alt () 消息 splay pri 時間限制:10000ms 單點時限:1000ms 內存限制:256MB 描述 小Hi的學校總共有N名學生,編號1-N。學校剛剛進行了一場全校的古詩文水平測驗。 學校沒有公布測驗的成績,所以小Hi

所有分數求解簡單問題!!!tiy

com 現在 有時 log 問題 class 風景 裏的 女孩 愛上一個人和忘記一個人到底誰快一點呢?有時候不知不覺就愛上了一個人,有時候一個人怎麽都忘不掉,有時候因為愛上了一個人很快就忘掉了另一個人,有時候因為忘不掉一個人而不敢愛上另一個人,敢愛比敢忘要容易許多,但有時我

氣泡排序的簡單問題(給名字分數 按總成績輸出最好的)

#include<iostream> #include<cstdio> #include<cstring> #include<string> using namespace std; struct xs{ st

簡單列舉--最大乘積、分數拆分

題意:       輸入n個元素組成的序列S,找出一個乘積最大的連續子序列。如果這個最大的乘積不是正數,輸出0(表示無解)。1<=n<=18,-10<=Si<=10。每一個案例之間用空白行分隔,案例輸出要求輸出"Case #M: The ma

<java>枚舉的簡單介紹

pic spi str spa 枚舉類 lee string line 舉例 1.枚舉,enum關鍵字,相當於public final static. 2.舉例: 首先定義了一個名為spiciness的枚舉類型。 public enum Spiciness {

簡單的python判斷基偶數練習

一個 pytho 程序 color ont style 奇數 log code #!/usr/bin/env python# Author:William Huangnum = int(input(‘please input your number:‘)) # 用int(