【题目描述】

已知一个数列a0,a1……am,其中a0=1,am=n; a0<a1<a2<……<am−1<am。对于每个k(1≤k≤m)满足ak=ai+aj(0≤i,j≤k−1),这里i与j可以相等。

现给定n的值,要求m的最小值(并不要求输出)及这个数列的值(可能存在多个数列,只输出任意一个满足条件的就可以)。

【输入】

多组数据,每行给定一个正整数n。输入以0结束。

【输出】

对于每组数据,输出满足条件的长度最小的数列。

【输入样例】

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

【源程序】

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<bitset>
#define EPS 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LL long long
const int MOD = 1E9+7;
const int N = 1000+5;
const int dx[] = {-1,1,0,0,-1,-1,1,1};
const int dy[] = {0,0,-1,1,-1,1,-1,1};
using namespace std;int n;
int a[N];
bool vis[N];
int cnt;
bool dfs(int step){if(step>cnt){if(a[cnt]==n)return true;return false;}for(int i=step-1;i>=1;i--){//搜索顺序优化for(int j=i;j>=1;j--){int temp=a[i]+a[j];if(temp>n)//可行性剪枝continue;if(!vis[temp]){if(temp<=a[step-1])return false;vis[temp]=true;a[step]=temp;if(dfs(step+1))return true;vis[temp]=false;}}}
}
int main(){while(scanf("%d",&n)!=EOF&&n){memset(a,0,sizeof(a));if(n==1)printf("1\n");else if(n==2)printf("1 2\n");else{a[1]=1;a[2]=2;cnt=3;while(!dfs(3)){memset(vis,false,sizeof(vis));cnt++;}for(int i=1;i<=cnt;i++)printf("%d ",a[i]);printf("\n");}}return 0;
}

Addition Chains(信息学奥赛一本通-T1443)相关推荐

  1. 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”

    董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...

  2. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

  3. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  4. 《信息学奥赛一本通 提高篇》

    提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...

  5. 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分

    信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...

  6. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  7. 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC

    http://ybt.ssoier.cn:8088/show_source.php?runid=14630195 /* 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC http:/ ...

  8. 信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂

    信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂 https://blog.csdn.net/mrcrack/article/details/82846727 快速幂取模算法如何实现? h ...

  9. 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02

    /* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...

最新文章

  1. 全网最具深度的三次握手、四次挥手讲解,稳进大厂
  2. LESSON 9.5 随机森林在巨量数据上的增量学习
  3. 8G+256G固态笔记本,结合这款IDEA插件,写代码飞起!
  4. php输出字符unicode码,[PHP]单字符Unicode编码解码函数
  5. 200设备管理器找不到蓝牙_达尔优LK200蓝牙键盘,一键切换+支持三台设备+百元不到...
  6. 计算未来轻沙龙 | 对抗攻击、强化学习,你关心的都在这里!
  7. Unity VR游戏开发干货教程:优化VR体验
  8. 黑盒测试法——等价类划分法(修改版)
  9. vm+ubuntu联网
  10. 猫:君主般的眼神 监视领地。 狗
  11. [导入]热烈祝贺实时数据库行业协会成立!
  12. 查看、删除本地电脑,连接过的共有文件夹(盘符) 「net use」
  13. JavaScript正则表达式之分组匹配 / 反向引用
  14. Javascript特效:秒杀倒计时
  15. Java游戏开发中应始终坚持的10项基本原则
  16. 5G移动通信 笔记 - 系统架构与标准体系
  17. 【Netty-进阶】学习笔记
  18. ubuntu查看网速的工具
  19. 建筑安装工程项目材料管理软件
  20. Oracle日期加减

热门文章

  1. .net VS Java 到底谁吃香?
  2. 程序员怎样上元宇宙的车?
  3. 北大教授李忠:谁说学数学只是为了升学?数学可以让你受益终生!
  4. Linux安全驱动模块,【漏洞预警】CVE-2017-2636:linux 内核n_hdlc驱动模块 本地提权漏洞...
  5. 两个运放制作加法器_同相加法器电路图_反相加法器电路图_运放加法器电路图解析...
  6. centos 释放swap_centos6.6关闭与打开swap(整理)
  7. 山哥新作:架构师必备技能之业务分析
  8. 58技术主席:还原万亿级三高业务场景的设计与实践
  9. UI标签库专题八:JEECG智能开发平台 Menu(左侧菜单生成标签)
  10. 开发指南专题一: JEECG微云快速开发平台前言