整数拆分问题
大家好,我最近遇到一个问题,希望高手帮我解决下。题目是:将一个整数进行拆分,并把每一种拆情况输出,如: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;
}
我的代码有点乱,而且有点问题,望牛人指点,写个好的算法,写上注释,谢谢、、、