无聊写了个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;
        }
       
    }                            //输出函数
}										
					
	


 
											





 
	    

 
	




