hdu 2616 dfs回溯暴力
2016-06-04 21:07
260 查看
点击打开链接
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int M=20;
typedef struct{
int x;
int y;
}Spell;
Spell s[M];
int n,visit[M],flag;
int Min;
void dfs(int cur,long m)
{
if(m<=0)
{
Min=min(Min,n-cur);
flag=1;
return;
}
if(cur==0)
{
if(m>0) return;
else
{
Min=min(Min,n-cur);
flag=1;
return;
}
}
if(Min<=n-cur) return; //最优性cut
int i,j,k;
for(i=0;i<n;i++)
{
if(!visit[i]) //暴力搜索全部解 当前可以用或不用这个spell
{
if(m<=s[i].y)
{
visit[i]=1;
dfs(cur-1,m-2*s[i].x);
}
else
{
visit[i]=1;
dfs(cur-1,m-s[i].x);
} //选完以后回溯
visit[i]=0; // 当前可以不选择这个spell
}
}
}
int main()
{
int m;
while(cin>>n>>m)
{
int i;
flag=0;
Min=1<<10;
memset(visit,0,sizeof(visit));
for(i=0;i<n;i++)
{
cin>>s[i].x>>s[i].y;
}
dfs(n,m);//用能用多少次spell 还有多少血
if(flag)
cout<<Min<<endl;
else
cout<<-1<<endl;
}
return 0;
}
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int M=20;
typedef struct{
int x;
int y;
}Spell;
Spell s[M];
int n,visit[M],flag;
int Min;
void dfs(int cur,long m)
{
if(m<=0)
{
Min=min(Min,n-cur);
flag=1;
return;
}
if(cur==0)
{
if(m>0) return;
else
{
Min=min(Min,n-cur);
flag=1;
return;
}
}
if(Min<=n-cur) return; //最优性cut
int i,j,k;
for(i=0;i<n;i++)
{
if(!visit[i]) //暴力搜索全部解 当前可以用或不用这个spell
{
if(m<=s[i].y)
{
visit[i]=1;
dfs(cur-1,m-2*s[i].x);
}
else
{
visit[i]=1;
dfs(cur-1,m-s[i].x);
} //选完以后回溯
visit[i]=0; // 当前可以不选择这个spell
}
}
}
int main()
{
int m;
while(cin>>n>>m)
{
int i;
flag=0;
Min=1<<10;
memset(visit,0,sizeof(visit));
for(i=0;i<n;i++)
{
cin>>s[i].x>>s[i].y;
}
dfs(n,m);//用能用多少次spell 还有多少血
if(flag)
cout<<Min<<endl;
else
cout<<-1<<endl;
}
return 0;
}
相关文章推荐
- pandas的iloc的神奇之处
- 随笔
- Ubuntu15.10 下安装Oracle 11g
- iOS开发(OC)——日期选择器
- C语言calloc()函数
- 电力电子仿真软件---PLECS
- EDID标准简介
- 【Light】[1043]Triangle Partitioning
- 【牛腩新闻发布系统】——验证码的反思
- bzoj 2660: [Beijing wc2012]最多的方案 递推
- 刷题第七天:南邮NOJ【1014数据的插入与删除】
- Qt学习二:移动无边框窗体
- 介绍一个轻量级iOS安全框架:SSKeyChain
- hdu5646(DZY Loves Partition) 划分
- apt-get详解
- Roman to Integer
- owin要跑起来
- WebResource-asp.net自定义控件引用外部资源方法
- 第117课: Spark Streaming性能优化:如何最大程度的确保Spark Cluster和Kafka链接的稳
- ElasticSearch(七)--请求体查询