美文网首页
【洛谷 P1025】数的划分

【洛谷 P1025】数的划分

作者: Siding | 来源:发表于2018-10-04 16:29 被阅读0次

数的划分(题目链接)

思路

  • 使用递归做的类似多重for循环的搜索

代码

#include <iostream>
using namespace std;

int n, k, ans = 0;

/*
 *last:上一次循环到的值
 *cur :当前分的个数
 *sum :当前累计的总数
*/
void f(int last, int cur, int sum){
    if(cur == k){           //如果分的个数和需要分的个数相同,就退出 
        if(n == sum){       //如果刚刚分完,就统计一次 
            ans++;
        }
        return;
    }
    //限制数范围,防止后面分的数比前面的小,从而避免重复 
    for(int i = last; sum + i*(k-cur) <= n; i++){
        f(i, cur+1, sum+i);
    }
}

int main(){
    cin >> n >> k;
    f(1, 0, 0);
    cout << ans;

    return 0;
} 
/*
 *最开始想到的方法是dp,但是最开始找到的状态转移方程有问题,所以没能AC, 
 *后面自己也想到了用多层for来搜索,搜索的次数用递归解决,但是循环条件
 *没有找好,导致分出来的数有重复,没有AC;看了dalao的方法,才知道了循环
 *条件,最终AC。 
*/ 

相关文章

  • 【洛谷 P1025】数的划分

    数的划分(题目链接) 思路 使用递归做的类似多重for循环的搜索 代码

  • 洛谷P1025题解

    题目链接:洛谷P1025 题目描述 将整数分成份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如:,下面...

  • 洛谷(方格取数问题)

    链接:https://www.luogu.org/problemnew/show/P2774思路:题目要求在n*m...

  • 数划分

    这个应该也算是一个入门级的 DP 题,但是对于初学的我来说状态还是不是很好想到。开始我想嘛,这个简单嘛 想的很简单...

  • 方格取数 洛谷1004 dp

    设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0。如下图所示(见样例...

  • 洛谷P1028数的计算

    题面 题目大意 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n <= 1000)...

  • 洛谷题解P1028 数的计算

    一、题目 https://www.luogu.org/problemnew/show/P1028 二、代码 少儿编...

  • 洛谷题解P1036 选数

    一、题目 https://www.luogu.org/problemnew/show/P1036 二、代码 少儿编...

  • 先天卦位配后天洛数取洛书数的河图五行

    先天卦位配后天洛数取洛书数的河图五行 先河后洛 先天卦位配后天洛数,取洛书数的河...

  • 【洛谷 P1059】明明的随机数

    明明的随机数(题目链接) 方法 利用set的特点做的一道水题 代码

网友评论

      本文标题:【洛谷 P1025】数的划分

      本文链接:https://www.haomeiwen.com/subject/skbxaftx.html