题意:给定n,k和数组r,构造长度为n的整数序列,第i个元素介于1到ri之间,所有元素之和是k的倍数
分析:用dfs遍历每个1到ri之间,层数为n的时候停止深搜
代码:
#include<bits/stdc++.h>
using namespace std;
int n,k,a[100],r[100];
void dfs(int i,int sum){
if(i==n){
if(sum%k==0){
for(int j=1;j<=n;j++)cout<<a[j]<<" ";
cout<<endl;
}
return;
}
for(int j=1;j<=r[i+1];j++){
a[i+1]=j;
dfs(i+1,sum+j);
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>r[i];
dfs(0,0);
return 0;
}