uva-529-枚举
2024-08-31 00:08:48
题意:
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 ;
}
最新文章
- Bootstrap-用ICheck插件给CheckBox换新装
- Redis学习笔记--五种数据类型的使用场景
- java中的异常和处理
- ES6:JavaScript 新特性
- Map/Reduce之间的Partitioner接口
- [转载]DOS循环:bat/批处理for命令详解 (史上虽详尽的总结和说明~~)
- chromium安装flash
- Java分页类 Page
- PHP设计模式之工厂模式(权限分配)
- uva10635 LCS映射转LIS
- activiti 动态配置 activiti 监听引擎启动和初始化(高级源码篇)
- 2 JAVA 项目名称前红色叹号如何解决
- c语言 贪食蛇小游戏
- click()和onclick()的区别
- 18 os/os.path模块中关于文件/目录常用的函数使用方法 (转)
- 环回接口---loopback
- windows下安装mysql5.6
- 采用dlopen、dlsym、dlclose dlopen dlerror加载动态链接库【总结】
- BZOJ4566: [Haoi2016]找相同字符(后缀自动机)
- Yarn 详解
热门文章
- OpenSSL 1.0.0生成p12、jks、crt等格式证书的命令个过程 -参考自http://lavasoft.blog.51cto.com/62575/1104993/
- MySQL行级锁测试
- Mysql权限速查表以及权限详解
- webGL之three.js入门4--ThreeJS Editor入门篇
- Azure 认知服务 (3) 计算机视觉API - 分析图像,使用C#代码
- nginx简单学习(tomcat)
- 【ApplicationListener】Springboot各类事件监听器
- 补充appium -api
- Linux下的Mysql安装 &; 配置
- Java NIO系列教程(三) Channel之Socket通道