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

解题报告:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm> using namespace std; const int maxn =; 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==?true:false);
if(Stick==num)
return true; for(i=pos+;i<n;i++)
{
if(used[i]) continue;
if(len+a[i]==aim)
{
used[i]=true;
if(dfs(Stick+,,-))
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+]) i++;
}
}
return false;
} int main()
{
while(scanf("%d",&n),n)
{
sum=;
for(int i=;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
} sort(a,a+n,cmp); for(aim=a[];aim<=sum;aim++)
{
if(sum%aim==)
{
num=sum/aim;
memset(used,false,sizeof(used));
if(dfs(,,-))
{
printf("%d\n",aim);
break;
}
}
}
}
return ;
}

最新文章

  1. memset 的实现分析
  2. HP DL60 Gen9 安装CentOS 6.5
  3. 16~25.spring+hibernate简单实例 .连接数据库并进行增删改查
  4. spark1.4的本地模式编程练习(1)
  5. 模板与继承之艺术——奇特的递归模板模式(CRTP)
  6. 学习java随笔第五篇:流程控制
  7. Android应用开发学习笔记之AsyncTask
  8. HDU_1239——再次调用外星智慧
  9. Cocos2d-x学习笔记(六) 定时器Schedule的简单应用
  10. 对于Java泛型的理解
  11. 比较容易理解的---原生js瀑布流
  12. C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)
  13. 开发你的第一个BLE应用程序—Blinky
  14. C# 语音合成
  15. ORM的概念
  16. appium+java(四)微信公众号自动化测试实践
  17. node中npm安装模块的网络问题
  18. Java SE 之 DAO层接口设计思想
  19. 在Android Studio中查看Sqlite的方法
  20. 剑指offer 高速排序

热门文章

  1. python3 杂记
  2. 省市联动 js
  3. 随性练习:python字典实现文本合并
  4. my28_mysql内存占用过高降低的方法
  5. python单元测试框架-unittest(一)
  6. [转]IE和FireFox中JS兼容之event .
  7. WSGI学习系列多种方式创建WebServer
  8. 在PHP中使用全局变量的几种方法
  9. Quartz使用(2) - Quartz核心接口Scheduler、Job
  10. C#本期本周的算法