1.注意输入的是哪个数组,输出的是哪个
2.dfs函数可以带两个参数,方便记录,一个记录第几个位置,一个记录题目的要求,例如求和。
3.注意递归出口输出后一定要return.
#include<bits/stdc++.h>
using namespace std;
int n,k;
int a[10], r[10];
void pr() {
for (int i = 1; i <= n; i++) {
cout << a[i] << ' ';
}
cout << endl;
}
void dfs(int x,int sum) {
if (x > n) {
if (sum % k == 0) {
pr();
}
return ;
}
for (int i = 1; i <= r[x]; i++) {
a[x] = i;
dfs(x + 1, sum + i);
a[x] = 0;
}
}
int main() {
cin >> n>>k;
for (int i = 1; i <= n; i++) {
cin >> r[i];
}
dfs(1,0);
return 0;
}