一个 n 位数,只由 1,2,3,4,⋯,p 这几个数字组成。 请编写程序输出这些n位数,先小后大,每行一个。
输入格式
两个整数 n,p(n ≤ 5,p ≤ 5)。
输出格式
若干行数。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
4 5
样例输出
1111
1112
1113
1114
1115
1121
1122
1123
1124
1125
1131
1132
1133
1134
1135
...
解题思路:
【递归简单题,逐层dfs可更换的数字即可。我刚开始维护了一个逐层输出的dfs,结果发现这样会导致未更改的位上的数字无法输出,于是数组维护,每次dfs到底层再输出。】
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int a[10],n,p;
void putt(int num,int x){
a[num] = x;
if(num == n){// n = 4
for(int i = 1 ;i <= n;i++){
printf("%d",a[i]);
}
printf("\n");
return;//跳出递归函数
}
num++;
for(int i = 1;i <= p;i++){
putt(num,i);
}
return;
}
int main(){
int i;
scanf("%d%d",&n,&p);//4 5
for(i = 1;i <= p;i++){
putt(1,i);
}
return 0;
}