[c]HDOJ1455 dfs的应用
来源:互联网 发布:软件打包工具 编辑:程序博客网 时间:2024/05/22 07:50
http://acm.hdu.edu.cn/showproblem.php?pid=1455
题目标题:sticks
题目大意:给一些小木棒长度,它是由等长的若干木棒任意砍断所得到的。对于给定的一组小木棒,求出原始木棒的最小长度
这个题可以用dfs深搜来做,是一个比较经典的dfs题
#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int sign=0;int ssign=0;int lsign=0;int a[65]={0};bool ss[65]={0};int n;int now;bool dfs(int c,int cur,int pos){if(c==n) return true;int i;for(int i=pos;i<n;i++){if(ss[i]) continue;if(cur+a[i]<now){ss[i]=1;if(dfs(c+1,cur+a[i],i+1))return 1;ss[i]=0;if(cur==0) return 0;while(a[i]==a[i+1] && i+1<n) i++;}else if(cur+a[i]==now){ss[i]=1;if(dfs(c+1,0,0)) return 1;ss[i]=0;return 0;}}return 0;}bool judge(int x,int y){if(x<y) return false;else return true;}int main(){int sum=0;int max=0;while(cin>>n){max=0;sum=0;sign=0;ssign=0;lsign=0;memset(a,0,sizeof(int)*65);memset(ss,0,65);if(n==0) break;int x;for(int i=0;i<n;i++){cin>>x;a[i]=x;sum+=x;if(x>max) max=x;}sort(a,a+n,judge);for(now=max;now<=sum;now++){memset(ss,0,65);if(sum%now!=0) continue;if(dfs(0,0,0)){sign=now;break;}}cout<<sign<<endl;}return 0;}
0 0
- [c]HDOJ1455 dfs的应用
- hdoj1455 poj1011 nyoj293 Sticks【DFS+剪枝】
- HDOJ1455 (DFS+剪枝优化)和 HDOJ1518可做类比
- Codeforces 29C:Mail Stamps(STL的应用+DFS)
- DFS的简单应用
- DFS的应用
- DFS的时间戳应用
- 回溯法,DFS的应用
- bfs/dfs的应用--countComponents
- DFS应用
- HDU4499 Cannon DFS 回溯的应用
- 【LeetCode】77. Combinations,DFS的变形应用
- [模板]DFS序的应用-初级
- 水管工游戏--dfs的应用
- POJ4084拓扑排序--DFS的应用
- 递归算法及DFS搜索的应用
- C语言对DFS简单应用(Red and Black
- C++dfs
- 封闭的三次贝塞尔曲线的填充
- JVM 优化经验总结
- maya之3d paint tool(3d绘制工具)
- 欢迎使用CSDN-markdown编辑器
- 用segment设置导航栏
- [c]HDOJ1455 dfs的应用
- 一张图告诉你是需要 SQL 还是 Hadoop
- oracle中trim,ltrim,rtrim函数的不同用法
- 杭电 1862 EXCEL排序
- jquery-mobile 学习笔记之二(表单创建)
- curl_easy_setopt-curl详解
- Vuforia开发技巧一-提高Target的识别率(第一部分)
- arduino example------Core Functions 核心功能 (未翻译完)
- 数据绑定概述 wpf