카테고리 없음
자연수 분할, Number Partition
kimximya
2025. 1. 6. 10:46
static int Number_Partition (int N)
{
int[] dp = new int[N+1];
dp[0] = 1;
for (int c=1; c<=N; c++)
{
for (int i=c; i<=N; i++)
dp[i] += dp[i-c];
}
return dp[N];
}
자연수 N을 순서 상관없이 분할하는 모든 경우의수

========================================================================================================================================================================================
static int Number_Partition_Generic (int N, int K)
{
int[][] dp = new int[N+1][K+1];
dp[0][0] = 1;
for (int i=1; i<=N; i++)
{
for (int j=1; j<=K; j++)
{
int value_1 = dp[i-1][j-1];
int value_2 = i-j > 0 ? dp[i-j][j] : 0;
dp[i][j] = value_1 + value_2;
}
}
return dp[N][K];
}

