该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
using namespace std;
fstream fout;
typedef unsigned int UINT;
UINT *p=NULL;
void combin(const UINT&,const UINT&,UINT=0,UINT=0);//函式声明
void combin(const UINT& arry,const UINT& len,UINT str,UINT end)
{
static unsigned char j=0;
static UINT k=0;//控制数组下标
if(str==0)//如果是第一次调用函式
{
end=arry-len+1;
p=new UINT[len];
fout.open("c:\\result.txt",ios::in|ios::out|ios::trunc);
}
if(k
{
for(;str
{
p[k++]=str+1;
combin(arry,len,str+1,end+1);//嵌套调用
--k;//k值返回原来
}
}
else//填充p[len-1],终止调用
{
for(;str
{
for(j=0;j
fout<
p[j]=str+1;
fout<
}
}
}
int main()
{
UINT n,m;//定义两个组合变量
cout<
while(2!=scanf("%d\n%d",&n,&m))//键盘输入
{
fflush(stdin);
system("cls");
cout<
}//while
if(n)//n不为0
{
if(m==0)
m=n;
else if(n
swap(n,m);//调换n m
combin(n,m);
fout.close();
system("start c:\\result.txt");
delete p;
}//n
return 0;
}//main