weixin_41429120 2021-08-15 19:00 采纳率: 34.6%
浏览 189
已结题

C++ 倍数序列 要求找到一个正整数序列

img

倍数序列
时间限制:1s
内存限制:128M
开始编程
题目描述
【题目描述】
要求找到一个正整数序列,满足序列中所有的数不超过nn,序列长度为mm,且除了第一个数外,所有的数都能被前一个数整除(即是前一个数的倍数)。
我们想要知道这样的序列都有哪些,输出所有满足要求的序列。
输入格式
第一行,两个正整数nn,mm。
输出格式
按字典序从小到大,每行输出一个满足要求的序列,数与数之间用空格分隔。
输入样例#1
输入#1
4 3
输出样例#1
输出#1
1 1 1
1 1 2
1 1 3
1 1 4
1 2 2
1 2 4
1 3 3
1 4 4
2 2 2
2 2 4
2 4 4
3 3 3
4 4 4
【样例说明】
以下13个数列满足条件
1,1,11,1,1;1,1,21,1,2;1,1,31,1,3;1,1,41,1,4;
1,2,21,2,2;1,2,41,2,4;1,3,31,3,3;1,4,41,4,4;
2,2,22,2,2;2,2,42,2,4;2,4,42,4,4;
3,3,33,3,3;4,4,44,4,4。
说明/提示
1 \le n \le 401≤n≤40;1 \le m \le 201≤m≤20

  • 写回答

3条回答 默认 最新

  • 诺er~ 2021-08-15 20:00
    关注

    这样是否更好理解?求看;不理解请私信哦

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    int a[10010];
    void dfs(int step,int num)
    {
        if(step>m)
        {
            for(int i=1;i<=m;i++)
            {
                cout<<a[i]<<" ";
            }
            cout<<endl;
            return ;
        }
        for(int i=0;i<=n-num;i++)
        {
            a[step]=num+i;
            if(a[step]%a[step-1]==0)
                dfs(step+1,a[step]);
            
        }
    }
    int main()
    {
        a[0]=1;
        cin>>n>>m;
        dfs(1,1);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月24日
  • 已采纳回答 8月16日
  • 创建了问题 8月15日

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘