寻找n位数
Description
一个n位数,只由1,2,3,4…p这几个数字组成。 请编写程序输出这些n位数,先小后大,每行一个。
Input
本问题有多组测试数据,每组有一行,每行有两个整数n,p(n<9,p<=9,且p^n<=32768),两数之间有空格隔开。
Output
对于每一组测试数据,输出有若干行,每行一个符合要求的整数。
Sample Input
4 6
Sample Output
…
6352
6353
…
想法
运用dfs 也可以理解为递归
Code
#include<bits/stdc++.h>
using namespace std;
const int MAX=100005;
#define EPS 1E-5
typedef long long ll;
int n,p;
char ans[MAX];
void dfs(int x){
if(x==n){
ans[n]='\0';
cout<<ans<<endl;
return;
}
for(int i=1;i<=p;++i){
ans[x]='0'+i;
dfs(x+1);
}
}
int main(){
while(cin>>n>>p){
dfs(0);
}
return 0;
}