- UID
- 203120
- 在线时间
- 0 小时
- 最后登录
- 2014-5-5
- 注册时间
- 2012-8-23
- 宅魂
- 229 点
- 贡献
- 33 点
- 宅币
- 4597 枚
- 灵石
- 0 块
- 元气(技能点)
- 0 点
- 活跃
- 0 ℃
- 听众
- 4
- 收听
- 0
该用户从未签到
序章
- 积分
- 5383
|
发表于 2013-4-26 18:57:56
|
显示全部楼层
本帖最后由 绯色基 于 2013-4-26 18:59 编辑
[mw_shl_code=c,true]
#include <stdio.h>
#include <stdlib.h>
#define M 100
int Add(int *a,int i);
int N,S,max=0;
int main()
{ int i,j,hg[M]={0},tmpe=0;
scanf("%d%d", &S,&N);
for(i=0;i<N;i++)
scanf("%d", &hg);
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(hg<hg[j])
tmpe=hg,hg=hg[j],hg[j]=tmpe;
for(i=0;i<N;i++)
{ max=0;
tmpe=Add(hg,i);
if(tmpe)
{printf("yes\n");
break;}
}
if(!tmpe)
printf("no");
system("pause");
return 0;
}
int Add(int *a,int i)
{
max+=a;
if(max==S)
return 1;
else if(max<S&&i<N)
Add(a,i+1);
else if(max>S&&i<N)
max-=a,Add(a,i+1);
else
return 0;
}
[/mw_shl_code]
我来交简单背包的,基本上就是排序后逐个尝试,自测通过 |
|