![]() |
#2
林月儿2018-05-26 23:15
|
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
他给的答案没有一点注释,我根本看不懂啊!!!

#include<algorithm>
#include<iterator>
#include<iostream>
using namespace std;
int selected[10];
int data[]={10,9,8,7,6,5,4,3,2,1};
void myfind(int start,int step,int M,int N)
{
if(step==N) {
copy(selected,selected+N,ostream_iterator<int>(cout,""));
cout<<endl;
return;
}
for(int i=start;i<=M;i++)
{
selected[step]=data[9-M+i];
myfind(i+1,step+1,M,N);
}
}
int main()
{
int m,n;
cin>>m>>n;
myfind(1,0,m,n);
}
#include<iterator>
#include<iostream>
using namespace std;
int selected[10];
int data[]={10,9,8,7,6,5,4,3,2,1};
void myfind(int start,int step,int M,int N)
{
if(step==N) {
copy(selected,selected+N,ostream_iterator<int>(cout,""));
cout<<endl;
return;
}
for(int i=start;i<=M;i++)
{
selected[step]=data[9-M+i];
myfind(i+1,step+1,M,N);
}
}
int main()
{
int m,n;
cin>>m>>n;
myfind(1,0,m,n);
}