一道经典dfs题,很简单就是让你求1~k能组成多少个n位数。
当然耐心足够的朋友可以尝试打表。
dfs思路:
1.定义数组a来存储每一次的组合,其中 a[i]表示第i位的数字;
3.递归一定要设定终止条件:如果枚举到了n+1位时,输出数组 a 并 return
Code
#include<bits/stdc++.h>
using namespace std;
int n,m,a[10010];
bool b[10010];
void dfs(int k){
if(k>n){
for(int i=1;i<=n;i++){
cout << a[i] << " ";
}
cout << endl;
return;
}
for(int i=1;i<=m;i++){
a[k]=i;
dfs(k+1);
}
}
int main(){
cin >> n >> m;
dfs(1);
return 0;
}