注册 登录
编程论坛 数据结构与算法

数据结构刚入门....来问一道题,要求用C调试通过

lrt201136019 发布于 2012-09-13 14:05, 538 次点击
设m,n均为自然数,m可表示为一些不超过n的自然数之和,试编写函数f(m,n)计算这种表示方法的数目。
例如:f(5,3)=5:3+2、3+1+1、2+2+1、2+1+1+1、1+1+1+1+1

3 回复
#2
寒风中的细雨2012-09-14 15:05
程序代码:
#include <iostream>
#include <list>
using namespace std;

list<int> g_list;

void show()
{
    list<int>::const_iterator beg = g_list.begin(),
        end = g_list.end();

    while (beg != end)
    {
        cout << *beg << ' ';
        ++beg;
    }
    cout << endl;
}

void f(int n)
{
    if (1 == n)
    {
        return;
    }
    int i = 1;
    int j = n/2;
    while (i <= j)
    {
        g_list.push_front(n-i);
        g_list.push_front(i);
        show();
        g_list.pop_front();
        f(i);
        g_list.pop_front();
        g_list.push_front(i);
        f(n-i);
        g_list.pop_front();
        ++i;
    }
}

int main()
{
    f(20);
    return 0;
}
#3
zhu2240392012-09-17 18:22
版主辛苦了 伸手党你也给代码   鄙视
#4
netlin2012-09-17 23:38
又是一个数学问题!
给出代码,也好,大家都可以学习一下!
1