关注
先将数据按从大到小进行排序,然后使用DFS所有可能
#include<iostream>
using
namespace
std
;
int
a
[
100
]
=
{
4
,
3
,
1
,
2
,
1
,
2
}
;
bool
x
[
100
]
;
//标记第i个元素是否已经使用
int
N
=
6
;
//元素个数
int
t
=
4
;
//目标和
int
sum
;
//当前和
int
cmp
(
const
void
*
a
,
const
void
*
b
)
{
return
*
(
int
*
)
b
-
*
(
int
*
)
a
;
}
void
backtrace
(
int
n
)
{
if
(
sum
>
t
)
//当前和大于t
return
;
if
(
sum
=
=
t
)
//当前和等于t,输出结果
{
for
(
int
j
=
0
;
j
<
n
;
+
+
j
)
{
if
(
x
[
j
]
)
cout
<
<
a
[
j
]
<
<
" "
;
}
cout
<
<
endl
;
return
;
}
if
(
n
=
=
N
)
//超过n层
return
;
for
(
int
i
=
n
;
i
<
N
;
+
+
i
)
{
if
(
x
[
i
]
=
=
false
)
//未使用
{
x
[
i
]
=
true
;
sum
+
=
a
[
i
]
;
backtrace
(
i
+
1
)
;
x
[
i
]
=
false
;
sum
-
=
a
[
i
]
;
while
(
i
<
N
-
1
&
&
a
[
i
]
=
=
a
[
i
+
1
]
)
//跳过相同的
i
+
+
;
}
}
}
int
main
(
)
{
sum
=
0
;
memset
(
x
,
0
,
sizeof
(
x
)
)
;
qsort
(
a
,
N
,
sizeof
(
a
[
0
]
)
,
cmp
)
;
backtrace
(
0
)
;
return
0
;
}
查看原帖
点赞 1
相关推荐
不愿透露姓名的神秘牛友
04-05 09:23
点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
707678次浏览 11521人参与
# 许愿池 #
77089次浏览 1541人参与
# 通信硬件人笔面经互助 #
107368次浏览 2175人参与
# 你的秋招进展怎么样了 #
500277次浏览 13413人参与
# 找工作时遇到的神仙HR #
177391次浏览 1744人参与
# 如何写一份好简历 #
258928次浏览 3914人参与
# 铜五铁六真的存在吗? #
27174次浏览 293人参与
# 找工作,你会甘心进小厂还是猛冲大厂 #
34950次浏览 352人参与
# 产品实习,你更倾向大公司or小公司 #
35902次浏览 548人参与
# 非技术岗是怎么找实习的 #
73751次浏览 1383人参与
# 市场营销面经 #
4492次浏览 125人参与
# 互联网公司评价 #
79321次浏览 1085人参与
# 通信硬件薪资爆料 #
195876次浏览 1757人参与
# 你的秋招进行到哪一步了 #
352572次浏览 6264人参与
# 硬件兄弟们 甩出你的华为奖状 #
27487次浏览 180人参与
# 无实习如何秋招上岸 #
224187次浏览 3512人参与
# 投了多少份简历才上岸 #
56542次浏览 945人参与
# 面试中的破防瞬间 #
82436次浏览 1013人参与
# 通信/硬件的薪资开多少,才值得去? #
10698次浏览 140人参与
# 产品人求职现状 #
50539次浏览 745人参与