| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 688 人关注过本帖
标题:整数拆分问题
取消只看楼主 加入收藏
爱编程的艾
Rank: 2
等 级:论坛游民
帖 子:19
专家分:38
注 册:2011-4-16
结帖率:0
收藏
已结贴  问题点数:10 回复次数:0 
整数拆分问题
大家好,我最近遇到一个问题,希望高手帮我解决下。
题目是:将一个整数进行拆分,并把每一种拆情况输出,如:4可以拆分成1+1+1+1,1+1+2,1+3,2+2.
一下是我写的代码,但是存在一个问题:
// 整数分解.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "iostream"
using namespace std;
void print(int m,int *a,int m1,int t)
{
    int i;
    int j;
    if(m==0)
    {
        for(i=0;i<m1;i++)
            {
                printf("%d",*(a+i));//当两种情况的时候,即分叉时,printf之后要对其重新赋值0,所以后面的情况就会有误。。。
            }
        for(i=0;i<m1;i++)
            *(a+i)=0;
        printf("\n");
    }
    else
    {
        for(j=1;j<=t;j++)
        {
            
            for(int k=0;k<j;k++)
                {
                    a[k]=a[k]+1;
                }
            print(m-j,a,m1,j);
            if((m-j)==0)break;
            
        }
    }
        
}
int _tmain(int argc, _TCHAR* argv[])
{
    int m;
    cout<<"Please Enter a Int Number:"<<endl;
    cin>>m;
    int b[5];
    for(int h=0;h<5;h++)
    {
        b[h]=0;
    }
    print(m,b,5,m);
    system("PAUSE");
    return 0;
}
我的代码有点乱,而且有点问题,望牛人指点,写个好的算法,写上注释,谢谢、、、
搜索更多相关主题的帖子: 控制台 应用程序 
2011-04-16 14:30
快速回复:整数拆分问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017947 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved