题意:

a0,a1,a2,a3....an

对于任意的i,j,k

0<=k<=n

0<=i<=k-1

0<=j<=k-1

ak=ai+aj

求a0.....an

解题思路:

迭代加深搜索,限定下界的深搜

首页,利用贪心算法,求出最小的步数depth,an=2ai,当an>=n的时候即可得到最小元素个数,由当前步数一步一步加大搜索的步数.

#include <stdio.h>
#include<iostream>
#include <string.h>
#include<memory.h>
using namespace std;
const int N = ;
int n = ;
int ans[N] = { };
int depth = ;
int flag = ;
void dfs(int cur)
{
if(flag)
return;
if(cur == depth)
{
if(ans[cur] == n)
flag = ;
return;
}
for(int i = ; i <= cur; i++)
{
for(int j = i; j <= cur; j++)
{
if(ans[i] + ans[j] > ans[cur] && ans[i] + ans[j] <= n)
{
int sum = ans[i] + ans[j];
for(int k = cur + ; k <= depth; k++)
sum = sum * ;
if(sum < n)
continue;
ans[cur + ] = ans[i] + ans[j];
dfs(cur + );
if(flag)
return;
}
} }
}
int main()
{
freopen("d://1.txt", "r", stdin);
while (cin >> n && n)
{
memset(ans, , sizeof(ans));
ans[] = ;
int k = ;
depth = ;
flag = ;
while (k < n)
{
++depth;
k = k * ;
}
while (!flag)
{
dfs();
if(!flag)
++depth;
}
cout << ans[];
for(int i = ; i <= depth; i++)
cout << " " << ans[i];
cout << endl;
}
return ;
}

最新文章

  1. Bootstrap-用ICheck插件给CheckBox换新装
  2. Redis学习笔记--五种数据类型的使用场景
  3. java中的异常和处理
  4. ES6:JavaScript 新特性
  5. Map/Reduce之间的Partitioner接口
  6. [转载]DOS循环:bat/批处理for命令详解 (史上虽详尽的总结和说明~~)
  7. chromium安装flash
  8. Java分页类 Page
  9. PHP设计模式之工厂模式(权限分配)
  10. uva10635 LCS映射转LIS
  11. activiti 动态配置 activiti 监听引擎启动和初始化(高级源码篇)
  12. 2 JAVA 项目名称前红色叹号如何解决
  13. c语言 贪食蛇小游戏
  14. click()和onclick()的区别
  15. 18 os/os.path模块中关于文件/目录常用的函数使用方法 (转)
  16. 环回接口---loopback
  17. windows下安装mysql5.6
  18. 采用dlopen、dlsym、dlclose dlopen dlerror加载动态链接库【总结】
  19. BZOJ4566: [Haoi2016]找相同字符(后缀自动机)
  20. Yarn 详解

热门文章

  1. OpenSSL 1.0.0生成p12、jks、crt等格式证书的命令个过程 -参考自http://lavasoft.blog.51cto.com/62575/1104993/
  2. MySQL行级锁测试
  3. Mysql权限速查表以及权限详解
  4. webGL之three.js入门4--ThreeJS Editor入门篇
  5. Azure 认知服务 (3) 计算机视觉API - 分析图像,使用C#代码
  6. nginx简单学习(tomcat)
  7. 【ApplicationListener】Springboot各类事件监听器
  8. 补充appium -api
  9. Linux下的Mysql安装 &amp; 配置
  10. Java NIO系列教程(三) Channel之Socket通道