#include<iostream>
using namespace std;
int partion(int n,int m)
{
if((n<1)||(m<1))
return 0;
if((n==1)||(m==1))
return 1;
if(n<m)
return partion(n,n);
if(n==m)
return 1+partion(n,m-1);
if(n>m) return partion(n,m-1)+partion(n-m,m);
}
int main(int argc,char *argv)
{
int n=6,m=6;
cout<<partion(n,m)<<endl;
}
#include<iostream>
using namespace std;
template<class Type>
void Perm(Type list[],int k,int m)
{
if(k==m)
{
for(int i=k;i<=m;i++)
cout<<list[i];
cout<<endl;
}
else
{
for(int j=k;j<=m;j++)
{
Swap(list[k],list[j]);
Perm(list,k+1,m);
Swap(list[k],list[j]);
}
}
}
template<class Type>
inline void Swap(Type &a,Type &b)
{
Type c=a;
a=b;
b=c;
}
int main(int argc,char *argv)
{
int list[5]={1,2,3,4,5};
Perm(list,0,4);
}