int* iNum[65535];
int iPos = 0;
void doWork(int iSum, int iNow)
{
    int iStart = iNow;

    iNum[iPos ++] = &iStart;
    while(iSum - iStart > iStart)
    {
        doWork(iSum - iStart, iStart + 1);
        for (int i=0; i<iPos; i++)
        {
            printf("%d + ", *iNum[i]);
        }
        printf("%d\n", iSum - iStart);
        iStart ++;
    }
    iPos --;
}

 

int _tmain(int argc, _TCHAR* argv[])
{
    char s[20] = {0};
    scanf("%s", s);
    int num = atoi(s);
    doWork(num, 1);
    getchar();
    getchar();
    return 0;

    return 0;
}

Posted on 2012-12-14 12:27  我不是牛人  阅读(499)  评论(0)    收藏  举报
编辑推荐:
· 行业思考:不是前端不行,是只会前端不行
· C#高级GDI+实战:从零开发一个流程图
· 2025年:是时候重新认识System.Text.Json了
· 源码浅析:SpringBoot main方法结束为什么程序不停止
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
阅读排行:
· 独立开发在线客服系统,我是如何与杀毒软件误报斗智斗勇的
· 换成.NET 9,你的LINQ代码还能快上7倍
· AI 时代,为什么我们还有必要写博客?
· where 1 = 1的作用?会影响性能吗?count(*) 和 count(1)哪个快?
· 独立开发:这才过去一个月?
点击右上角即可分享
微信分享提示