无聊写了个1到M中输出N个数的所有组合,给优化优化吧,思想最好别给变
程序代码:#include "stdio.h"
#include "iostream"
using namespace std;
extern void fulledition2 (int m,int n);
int factorial (int m)
{
int i;
int s=1;
for(i=1;i<=m;i++)
{
s=s*i;
}
return s;
}
int main ()
{
int i,n,m;
cout<<"输入M"<<endl;
cin>>m;
cout<<"输入N"<<endl;
cin>>n;
i=factorial(m)/(factorial(n)*factorial(m-n));
cout<<"M中取N的组合数="<<i<<endl;
cout<<"所有组合情况:"<<endl;
fulledition2(m,n);
return 0;
}#include "stdio.h"
#include "iostream"
using namespace std;
void fulledition2 (int m,int n)
{
int t[1000];
int i,a,sum,b;
t[0]=0;
for (i=1;i<=n;i++)
{
t[i]=1;
}
for (i=n+1;i<=m;i++)
{
t[i]=0;
} //初始化t[i]的值
for(i=0;i<=m;i++)
{
if (t[i]==1)
cout<<i<<" ";
}
cout<<endl;
for(i=1;i<=m;i++)
{
if(t[i]==1&&t[i+1]==0)
{
sum=0;
for(a=0;a<i;a++)
sum=sum+t[a];
t[i+1]=1;
t[i]=0;
for(b=1;b<=sum;b++)
t[b]=1;
for(b=sum+1;b<=i;b++)
t[b]=0;
for(i=0;i<=m;i++)
{
if (t[i]==1)
cout<<i<<" ";
}
cout<<endl;
i=0;
}
} //输出函数
}









