NOIP2012普及组初赛及答案(C++)
输入:3 2 输出:1 2 1 3 2 1 2 3 3 1 3 2
#include <iostream> #include <cstring> using namespace std; const int SIZE =25; bool used[SIZE]; int data[SIZE]; int n,m,i,j,k; bool flag; int main() {
cin>>n>>m;
memset(used,false,sizeof(used)); for(i=1;i<=m;i++) {
data[i]=i;
used[i]=true; }
flag=true; while(flag) {
for(i=1;i<=m-1;i++) cout<<data[i]<<" "; cout<<data[m]<<endl; flag= ① ; for(i=m;i>=1;i--) {
② ;
for(j=data[i]+1;j<=n;j++) if(!used[j]) {
used[j]=true;
data[i]= ③ ; flag=true; break; } if(flag) {
for(k=i+1;k<=m;k++)