Addition Chains(信息学奥赛一本通-T1443)
【题目描述】
已知一个数列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)相关推荐
- 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”
董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
- 《信息学奥赛一本通 提高篇》
提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...
- 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC
http://ybt.ssoier.cn:8088/show_source.php?runid=14630195 /* 信息学奥赛一本通 1080:余数相同问题 2022.1.29 AC http:/ ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂
信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂 https://blog.csdn.net/mrcrack/article/details/82846727 快速幂取模算法如何实现? h ...
- 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02
/* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...
最新文章
- 全网最具深度的三次握手、四次挥手讲解,稳进大厂
- LESSON 9.5 随机森林在巨量数据上的增量学习
- 8G+256G固态笔记本,结合这款IDEA插件,写代码飞起!
- php输出字符unicode码,[PHP]单字符Unicode编码解码函数
- 200设备管理器找不到蓝牙_达尔优LK200蓝牙键盘,一键切换+支持三台设备+百元不到...
- 计算未来轻沙龙 | 对抗攻击、强化学习,你关心的都在这里!
- Unity VR游戏开发干货教程:优化VR体验
- 黑盒测试法——等价类划分法(修改版)
- vm+ubuntu联网
- 猫:君主般的眼神 监视领地。 狗
- [导入]热烈祝贺实时数据库行业协会成立!
- 查看、删除本地电脑,连接过的共有文件夹(盘符) 「net use」
- JavaScript正则表达式之分组匹配 / 反向引用
- Javascript特效:秒杀倒计时
- Java游戏开发中应始终坚持的10项基本原则
- 5G移动通信 笔记 - 系统架构与标准体系
- 【Netty-进阶】学习笔记
- ubuntu查看网速的工具
- 建筑安装工程项目材料管理软件
- Oracle日期加减
热门文章
- .net VS Java 到底谁吃香?
- 程序员怎样上元宇宙的车?
- 北大教授李忠:谁说学数学只是为了升学?数学可以让你受益终生!
- Linux安全驱动模块,【漏洞预警】CVE-2017-2636:linux 内核n_hdlc驱动模块 本地提权漏洞...
- 两个运放制作加法器_同相加法器电路图_反相加法器电路图_运放加法器电路图解析...
- centos 释放swap_centos6.6关闭与打开swap(整理)
- 山哥新作:架构师必备技能之业务分析
- 58技术主席:还原万亿级三高业务场景的设计与实践
- UI标签库专题八:JEECG智能开发平台 Menu(左侧菜单生成标签)
- 开发指南专题一: JEECG微云快速开发平台前言