//m
<
15, qq:997737609
void
combs
(
std
::
vector
<
int
>&v
,
std
::
vector
<
std
::
vector
<
int
>>
&P
,
int
m
)
{
//1*n
int
n
=
v
.size
();
if
(n
==
m
)
{
P
.push_back
(v
);
}
else
if
(m
==
1
)
{
P
.resize
(v
.size
());
for
(
int
i
=
0
;
i
<
P
.size
();
i
++)
{
P
[i
].push_back
(v
[i
]);
}
}
else
{
P
.resize
(
0
);
if
(m
<
n
&&
m
>
1
)
{
for
(
int
k
=
0
;
k
<
n
-m
+
1
;
k
++)
{
std
::
vector
<
std
::
vector
<
int
>>
Q
;
std
::
vector
<
int
>
vtemp
(n
-k
-
1
);
std
::copy
(v
.begin
()+k
+
1
,
v
.begin
()+n
,
vtemp
.begin
());
combs
(vtemp
,
Q
,
m
-
1
);
std
::
vector
<
std
::
vector
<
int
>>
Qt
(Q
.size
());
for
(
int
i
=
0
;
i
<
Q
.size
();
i
++)
//i
rows
{
Qt
[i
].push_back
(v
[k
]);
Qt
[i
].insert
(Qt
[i
].end
(),
Q
[i
].begin
(),
Q
[i
].end
());
}
if
(P
.size
()
==
0
)
{
P
=
Qt
;
}
else
{
P
.insert
(P
.end
(),Qt
.begin
(),
Qt
.end
());
}
}
}
}
}
main()
{
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
v.push_back(6);
v.push_back(7);
v.push_back(8);
std::vector<std::vector<int >> re;
combs(v,re, 2);
}