1, 1, 2
1, 2, 1
2, 1, 1
1, 1, 2
1, 2, 1
2, 1, 1
榪欐槸璇ョ畻娉曠殑緙虹偣錛屼篃闄愬埗浜?jiǎn)瀹冪殑閫傜敤鑼冨洿銆?br />
紼嬪簭鎻忚堪濡備笅錛?/font>
#include聽
<
iostream
>
#include聽
<
algorithm
>
聽
using
聽
namespace
聽std;聽
//
聽閫掑綊浜х敓R[k:n]鐨勬墍鏈夌殑鎺掑垪錛?strong>鍏冪礌鏄簰寮傜殑
template聽
<
class
聽Type
>
void
聽permutation(Type聽
*
R,
int
聽k,
int
聽n)
{
聽聽聽聽
if
(k
==
n)
聽聽聽聽{
聽聽聽聽聽聽聽聽
for
(
int
聽i
=
0
;i
<
n;
++
i)
聽聽聽聽聽聽聽聽聽聽聽聽cout聽
<<
聽R[i]聽
<<
聽
"
\t
"
;
聽聽聽聽聽聽聽聽cout聽
<<
聽endl;
聽聽聽聽}
聽聽聽聽
else
聽聽聽聽聽聽聽聽
for
(
int
聽i
=
k;i
<
n;
++
i)
聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽swap(R[k],R[i]);
聽聽聽聽聽聽聽聽聽聽聽聽permutation(R,k
+
1
,n);
聽聽聽聽聽聽聽聽聽聽聽聽swap(R[k],R[i]);
聽聽聽聽聽聽聽聽}
}
榪樻湁涓縐嶅緢綆鍗曠殑鏂規(guī)硶錛屼嬌鐢℅P涓殑鏂規(guī)硶
璇ョ畻娉曟槸STL涓殑鑼冨瀷綆楁硶錛屽綋鐒舵晥鏋滄槸寰堝ソ鐨勶紝涓嶄細(xì)鍑虹幇涓婇潰鐨勭畻娉曠殑鎯呭喌銆?br />
紼嬪簭鎻忚堪濡備笅錛?/font>
//
聽浣跨敤娉涘瀷綆楁硶next_permutation()
#include聽
<
iostream
>
#include聽
<
vector
>
#include聽
<
algorithm
>
聽
using
聽
namespace
聽std;聽
//
聽浜х敓R[k:n]鐨勬墍鏈夌殑鎺掑垪
template聽
<
class
聽Type
>
聽
void
聽pernutation(Type聽
*
R,
int
聽k,
int
聽n)
{
聽vector
<
Type
>
聽myVec;
聽
int
聽i,size聽
=
聽n聽
-
聽k;
聽
for
(i聽
=
聽k;i聽
<
聽n;i
++
)
聽聽myVec.push_back(R[i]);
聽
//
聽浣跨敤next_permutation()鍑芥暟蹇呴』鏄湁搴忕殑鏁版嵁
聽sort(myVec.begin(),myVec.end());
聽聽
聽
do
聽{
聽聽
for
(i聽
=
聽
0
;i聽
<
聽size;i
++
)
聽聽聽cout聽
<<
聽myVec[i]聽
<<
聽
"
\t
"
;
聽聽cout聽
<<
聽endl;
聽}
聽
while
(next_permutation(myVec.begin(),myVec.end()));
}
娉細(xì)榪欓噷鐨勫緟鍏ㄦ帓鐨勬暟鎹槸瀛樺湪鏁扮粍鎴栬呭悜閲忎腑鐨勩?/p>

]]>