並べ替えの問題を再考する
並べ替えの問題を再考する
説明
明ちゃんはとても頭が良くて、配列計算が上手です.例えば、明ちゃんに数字5をあげると、すぐに1-5の辞書順の全配列を与えることができます.もし彼を困らせたいなら、この5つの数字の中からいくつかの数字を選んで彼に全配列を続けさせると、あなたは間違っています.彼は同じように得意です.配列が上手な明ちゃんが正しいかどうかを検証するためにプログラムを書く必要があります.
入力
第1行入力整数N(1しゅつりょく
1-nでm文字を選択して全配列し、辞書順にすべて出力し、各配列が1行を占め、各グループのデータ間に境界を付ける必要はありません.例のごとく
サンプル入力
サンプル出力
ACコード:
説明
明ちゃんはとても頭が良くて、配列計算が上手です.例えば、明ちゃんに数字5をあげると、すぐに1-5の辞書順の全配列を与えることができます.もし彼を困らせたいなら、この5つの数字の中からいくつかの数字を選んで彼に全配列を続けさせると、あなたは間違っています.彼は同じように得意です.配列が上手な明ちゃんが正しいかどうかを検証するためにプログラムを書く必要があります.
入力
第1行入力整数N(1
1-nでm文字を選択して全配列し、辞書順にすべて出力し、各配列が1行を占め、各グループのデータ間に境界を付ける必要はありません.例のごとく
サンプル入力
2
3 1
4 2
サンプル出力
1
2
3
12
13
14
21
23
24
31
32
34
41
42
43
ACコード:
#include<cstdio>
#define MAX 20
using namespace std;
int main(int argc,char *argv[])
{
int count;
int m,n;
int flag;
int i,j;
int A[MAX];
scanf("%d",&count);
while(count--)
{
scanf("%d%d",&n,&m);
i=1;
A[i]=1;
while(1)
{
flag=1;
for(j=1;j<i;j++)//
{
if(A[j]==A[i])
{
flag=0;
break;
}
}
if(flag&&i==m)//
{
for(j=1;j<=m;j++)
printf("%d",A[j]);
printf("
");
}
if(flag&&i<m)// M, , 1
{
i++;
A[i]=1;
continue;
}
while(A[i]==n)// ,
i--;
if(i>0)//
A[i]++;
else
break;
}
}
return 0;
}