马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
题意:给定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;
- }
复制代码 |