题目链接:http://poj.org/problem?id=1011

解题报告:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>using namespace std;const int maxn =70;int n,sum,aim,num,a[maxn];bool used[maxn];bool cmp(int a,int b)
{return a>b;
}bool dfs(int Stick,int len,int pos)
{///Stick表示当前组合好的棍子数,len表示已经有的长度,pos表示搜索到了第几根int i;bool sign=(len==0?true:false);if(Stick==num)return true;for(i=pos+1;i<n;i++){if(used[i]) continue;if(len+a[i]==aim){used[i]=true;if(dfs(Stick+1,0,-1))return true;used[i]=false;return false;}else if(len+a[i]<aim){used[i]=true;if(dfs(Stick,len+a[i],i))return true;used[i]=false;if(sign) return false;while(a[i]==a[i+1]) i++;}}return false;
}int main()
{while(scanf("%d",&n),n){sum=0;for(int i=0;i<n;i++){scanf("%d",&a[i]);sum+=a[i];}sort(a,a+n,cmp);for(aim=a[0];aim<=sum;aim++){if(sum%aim==0){num=sum/aim;memset(used,false,sizeof(used));if(dfs(1,0,-1)){printf("%d\n",aim);break;}}}}return 0;
}

转载于:https://www.cnblogs.com/TreeDream/p/5360690.html

木棒,POJ(1011)相关推荐

  1. Poj 1011 UVA - 307 Sticks

    牛客网 poj 1011 题目: George took sticks of the same length and cut them randomly until all parts became ...

  2. POJ 1011 Sticks

    POJ_1011 做完这个题目,让我不仅学到了一些别人剪枝的策略,更重要的是让我意识到了在搜索中剪枝的重要性. 所谓剪枝,其实就是对程序的优化,尽可能地避免程序执行无用的操作.就这个题目而言,程序的优 ...

  3. Poj 1011:sticks通俗易懂 大法师+强力剪枝

    题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 50 50 50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小 ...

  4. poj 1011 Sticks 搜索

    发一道老早写的题. 1 #include<iostream> 2 #include <algorithm> 3 using namespace std; 4 int a[65] ...

  5. POJ - 1011 Sticks(dfs+剪枝)(好题!!)

    题目链接:点击查看 题目大意:乔治拿来一组等长的木棍,将他们随机砍断,使得每一节木棍的长度都不超过50个单位长度,然后他又想将这些木棍恢复成砍断之前的状态,但他忘记了初始时有多少根木棍以及木棍的初始长 ...

  6. poj 2362 Square

    #include <iostream> //参照poj 1011 sticks#include <algorithm>using namespace std;int stick ...

  7. ACM题集以及各种总结大全(转)

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  8. UVA 307 Sticks

    UVA_307 相当于重温了一下POJ 1011这个题目,剪枝在这个题目中显得尤为重要. 对于这道题而言,剪枝的策略一般有下面6个: ①先将木棒长度从大到小进行排序,这样便于后面的选择和操作,是后面一 ...

  9. 【木棍问题——回溯与分支限界算法(使用C语言解决)】

    目录 问题描述 代码 输入和输出 总结分析 问题描述 木棍问题 描述 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但 ...

最新文章

  1. unittest单元测试框架之unittest案例(二)
  2. 深入分析几种PHP获取客户端IP的情况
  3. 验证OpenStack安装
  4. 缴满15年能领多少钱 养老金计算公式网上疯传
  5. Linux下ACE、xml解析库开发环境搭建
  6. 虚拟化系列-VMware vSphere 5.1 虚拟机管理
  7. Orace用户创建及权限分配
  8. 用RDLC报表(一)
  9. 案例学习BlazeDS+Spring之十一:Simple Data Push
  10. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
  11. mysql 不执行索引_mysql使用不上索引的几种情况
  12. Horizon client连接windows桌面显示:USB设备已禁用/USB重定向功能已禁用
  13. con 元器件符号_altium designer常用元件电气符号和封装形式
  14. java代码对图片缩放
  15. 移动端调用微信和支付宝的扫一扫功能
  16. K-armed Bandit
  17. JavaWeb解决中文下载出现乱码问题
  18. 使用python将txt格式的数据转换为csv格式,读取csv数据前几行
  19. 请问你们学校有计算机教室吗英语翻译,我们家有电脑。英语翻译
  20. IaaS、 PaaS、SaaS是什么

热门文章

  1. 主函数 main WinMain _tmain _tWinMain 的区别
  2. Error: Could not find or load main class
  3. [Redux/Mobx] 什么是单一数据源?
  4. 前端学习(3237):react生命周期4
  5. [html] 如何阻止屏幕旋转时自动调整字体的大小?
  6. [css] 行内css和important哪个优先级高?
  7. [vue] 你有使用过vue开发多语言项目吗?说说你的做法?
  8. 前端学习(2828):数组和对象循环
  9. “约见”面试官系列之常见面试题之第一百零八篇之如何获取dom(建议收藏)
  10. 前端学习(2404):表单验证总结