acwing-170. 加成序列(迭代加深)「建议收藏」

acwing-170. 加成序列(迭代加深)「建议收藏」满足如下条件的序列 X(序列中元素被标号为 1、2、3…m)被称为“加成序列”:X[1]=1X[m]=nX[1]<X[2]<…<X[m−1]<X[m]对于每个 k(2≤k≤m)都存在两个整数 i 和 j (1≤i,j≤k−1,i 和 j 可相等),使得 X[k]=X[i]+X[j]。你的任务是:给定一个整数 n,找出符合上述条件的长度 m 最小的“加成序列”。如果有多个满足要求的答案,只需要找出任意一个可行解。输入格式输入包含多组测试用例。每组测试用例占据一行,包含

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

满足如下条件的序列 X(序列中元素被标号为 1、2、3…m)被称为“加成序列”:

X[1]=1
X[m]=n
X[1]<X[2]<…<X[m−1]<X[m]
对于每个 k(2≤k≤m)都存在两个整数 i 和 j (1≤i,j≤k−1,i 和 j 可相等),使得 X[k]=X[i]+X[j]。
你的任务是:给定一个整数 n,找出符合上述条件的长度 m 最小的“加成序列”。

如果有多个满足要求的答案,只需要找出任意一个可行解。

输入格式
输入包含多组测试用例。

每组测试用例占据一行,包含一个整数 n。

当输入为单行的 0 时,表示输入结束。

输出格式
对于每个测试用例,输出一个满足需求的整数序列,数字之间用空格隔开。

每个输出占一行。

数据范围
1≤n≤100

输入样例:
5
7
12
15
77
0
输出样例:
1 2 4 5
1 2 4 6 7
1 2 4 8 12
1 2 4 5 10 15
1 2 4 8 9 17 34 68 77

题解
迭代加深
dfs(int u,int maxn):已经做了u个了,当前允许最多做maxn次
if(…)return true;
if(u == maxn)return true;

#include<bits/stdc++.h>
using namespace std;
const int N = 210;
int a[N],n;
vector<int>res;
bool dfs(int u,int maxn){ 
   
    if(a[u - 1] == n)return true;
    if(u == maxn){ 
   
        return false;
    }
    int vis[N];
    memset(vis,0,sizeof vis);
    for(int i = u - 1;i >= 0;i --){ 
   
        for(int j = i;j >= 0 ;j --){ 
   
            a[u] = a[i] + a[j];
            if(a[u] <= a[u - 1])continue;
            if(vis[a[u]])continue;
            vis[a[u]] = true;
            if(dfs(u + 1,maxn))return true;
        }
    }
    return false;
}
int main(){ 
   
    while(cin>>n,n != 0){ 
   
        res.clear();
        int maxn;
        a[0] = 1;
        for(maxn = 1;maxn <= n;maxn ++){ 
   
            if(dfs(1,maxn))break;
        }
        for(int i = 0;i < maxn;i ++)cout<<a[i]<<" ";
        cout<<endl;
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168662.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MATLAB GUI界面编程——一些细节问题「建议收藏」

    MATLAB GUI界面编程——一些细节问题「建议收藏」写在前面的话:本篇博文主要对自己在进行MATLABGUI设计时遇到的一些细节问题进行总结,点击下面目录中的相关问题,可以直接跳转至相应位置。另外,需要声明的是,我所使用的MATLAB版本——MATLAB R2017a。目录一、使用MATLAB的GUIDE开发环境,来快速创建GUI界面二、修改MATLABGUI的.fig和.m文件名三、修改MATLABGUI界面的名字四…

    2022年6月14日
    84
  • python开发h5页面_大数据和python有关吗

    python开发h5页面_大数据和python有关吗文章目录前言HDF与h5简介数据组织方式HDFView下载与安装在WIN10系统安装后打开出现黑框闪退的解决方法python对h5文件的操作批量制作h5文件h5文件的提取,另存为nii文件前言一般来说,深度学习的训练数据和训练后的参数都会保存为h5格式文件,对于训练数据来说,深度学习中当训练大量数据时,如果从硬盘中加载再预处理,再传递进网络,这是一个非常耗时的过程。其中从硬盘中读取图片会花费大量时间,更可行在方法是将其存在单个文件中,如h5文件。那么h5文件对于深度学习训练具有什么优势呢?可以支持

    2022年9月4日
    2
  • 两数之和 IV – 输入 BST

    两数之和 IV – 输入 BST两数之和IV-输入BST(力扣:653)给定一个二叉搜索树和一个目标结果,如果BST中存在两个元素且它们的和等于给定的目标结果,则返回true。

    2022年5月9日
    40
  • python实现卷积操作

    python实现卷积操作文章目录调用tf.nn.conv2d()实现卷积自己实现卷积函数我们知道,tensorflow里面自带卷积函数,tf.nn.conv2d()就可以实现相关功能,本文主要是自己实现卷积操作,然后和tf.nn.conv2d()函数的结果对比,验证正确性。调用tf.nn.conv2d()实现卷积首先是调用卷积函数实现卷积操作:这里说明一下conv2d的定义及参数含义:参考【定义:】tf.n…

    2022年5月28日
    32
  • 七彩虹 pci内存控制器 感叹号 蓝屏 DPC_WATCHDOG_VIOLATION

    七彩虹 pci内存控制器 感叹号 蓝屏 DPC_WATCHDOG_VIOLATIONsm总线控制器

    2022年6月5日
    39
  • C# DllImport的用法

    大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。DllImport所在的名字空间usingSystem.Runtime.InteropServices;MSDN中

    2022年4月8日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号