C - Enumerate Sequences(abc367)

[复制链接]
发表于 2026-2-4 05:22:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
题意:给定n,k和数组r,构造长度为n的整数序列,第i个元素介于1到ri之间,全部元素之和是k的倍数
分析:用dfs遍历每个1到ri之间,层数为n的时间克制深搜
代码:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,k,a[100],r[100];
  4. void dfs(int i,int sum){
  5.         if(i==n){
  6.                 if(sum%k==0){
  7.                         for(int j=1;j<=n;j++)cout<<a[j]<<" ";
  8.                         cout<<endl;
  9.                 }
  10.                 return;
  11.         }
  12.         for(int j=1;j<=r[i+1];j++){
  13.                 a[i+1]=j;
  14.                 dfs(i+1,sum+j);
  15.         }
  16. }
  17. int main(){
  18.         cin>>n>>k;
  19.         for(int i=1;i<=n;i++)cin>>r[i];
  20.         dfs(0,0);
  21.         return 0;
  22. }
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表