📄 整数的划分个数及显示.cpp
字号:
#include<iostream.h>
const int size=20;
int path[size];
int getlist(int m,int n,int &floor)
{
int sum=0;
if(m<1||n<1)
return sum;
else
if(n==1)
{
for(int j=0;j<floor;j++)
cout<<path[j]<<"+";
for(int i=0;i<m-1;i++)
cout<<"1+";
cout<<1;
sum++;
cout<<",";
}
else
if(n>=m)
{
for(int j=0;j<floor;j++)
cout<<path[j]<<"+";
sum++;
cout<<m;
cout<<",";
}
else
if(m>n&&n>1)
{
int min=m-n<n ? m-n:n;
path[floor]=n;
floor++;
for(int i=min;i>=1;i--)
{
int flag=floor;//保存起点
sum+=getlist(m-n,i,floor);
floor=flag;//恢复起点
}
}
return sum;
}
int getlistsum(int m)
{
int sum=0,floor;
for(int i=1;i<=m;i++)
{
floor=0;
int temp=getlist(m,i,floor);
cout<<'\b'<<";"<<endl;//注意'\b'的作用!
sum+=temp;
}
return sum;
}
void main()
{
int n;
cout<<"请输入一个整数(不要太大)!"<<endl;
cin>>n;
cout<<"p("<<n<<")="<<getlistsum(n)<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -