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