吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1038|回复: 2
收起左侧

[求助] 求助大神们一个C语言程序实现问题

[复制链接]
切·诺万夫斯基 发表于 2020-3-16 00:56
如果想要实现一个正整数n划分成k个不同的数的和,然后求一共有多少种分法,该如何实现?
比如求6划分成3个不同数的和:6=1+2+3,共一种。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

845xyz 发表于 2020-3-16 03:29
分解问题 假设三个数分别为a b c
条件1:且(a.max)/2>=(b.max) & (b.max/2>=c.max) 用于明确循环边界
条件2:a最大可为n-3 即b=2 c=1
条件3:a!=b & b!=c
widsnoy 发表于 2020-3-17 14:36
不知道题主的数据范围,写了一个很裸的暴力。
(其实是太菜了不知道dp该怎么转移,如果有人会的话请务必告诉我)
[C++] 纯文本查看 复制代码
#include<bits/stdc++.h>
using namespace std;

const int N = 5005;
int n, k, ans;

void dfs(int x, int sum, int kk) {
    if(kk > k) return;
    if(sum == n && kk == k) {
        ans++;
        return;
    }
    for(int i = x + 1; sum + i <= n; i++) {
        dfs(i, sum + i, kk + 1);
    }
}

int main() {
    scanf("%d %d", &n, &k);
    dfs(0, 0, 0);
    printf("%d\n",ans);
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 18:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表