关注
先将数据按从大到小进行排序,然后使用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
相关推荐
牛客热帖
更多
正在热议
更多
# 今年春招是金一银二嘛? #
24662次浏览 233人参与
# 软开人,秋招你打算投哪些公司呢 #
175574次浏览 1299人参与
# 没关系,至少我的__很曼妙 #
10379次浏览 156人参与
# 帆软软件工作体验 #
9774次浏览 41人参与
# 赚钱的意义在这一刻具象化 #
10547次浏览 207人参与
# AI求职实录 #
15379次浏览 372人参与
# 关于提前批我想问 #
265156次浏览 2298人参与
# 总结:哪家公司面试体验感最好 #
79514次浏览 445人参与
# 我的秋招“寄”录 #
414545次浏览 2930人参与
# 抛开难度不谈,你最想去哪家公司? #
13459次浏览 209人参与
# 快手年终开大包 #
3336次浏览 46人参与
# 你的第一家实习公司是什么档次? #
11362次浏览 128人参与
# 为什么有人零实习也能进大厂? #
12570次浏览 227人参与
# 牛客吐槽大会 #
9060次浏览 156人参与
# 1月小结:你过的开心吗? #
4483次浏览 79人参与
# AI时代的工作 VS 传统时代的工作,有哪些不同? #
14977次浏览 351人参与
# 实习工作,你找得还顺利吗? #
564469次浏览 6664人参与
# 十一月总结 #
76435次浏览 424人参与
# 小红书求职进展汇总 #
214436次浏览 1311人参与
# Prompt分享 #
16155次浏览 375人参与

