新微赢技术网
标题:
如何实现全排列
[打印本页]
作者:
┗白觀喑﹖
时间:
2009-11-4 00:04
标题:
如何实现全排列
随便输入一个数字字符串,然后,将它的全排列全部输出来。
比如,输入123,则输出 123,132,213,231,321,312;
输入331,则输出 331,313,133.
作者:
£籍の口∮
时间:
2009-11-4 00:04
你用循环吧..然后剔除相同项的排列....
作者:
→大虾米々
时间:
2009-11-4 00:04
可以用递归:
#include <iostream>
template<class T>
inline void swap( T& a, T& b )
{
T tmp = a;
a = b;
b = tmp;
}
template<class T>
void Perm( T list[], int start, int end )
{
int i;
if ( start == end )
{
for ( i = 0; i <= end; i++ )
cout << list[i];
cout << endl;
}
else
for ( i = start; i <= end; i++ )
{
swap( list[start], list[i] );
Perm( list, start+1, end );
swap( list[start], list[i] );
}
}
void main()
{
int list[] = {1,2,3,4,5};
Perm( list, 0, 4 );
}
作者:
ˊ.龙之吻︷
时间:
2009-11-4 00:04
这个题目我做过好几遍了..以前都是用递归..发觉循环也可以做..呵呵..而且不像递归那样难理解...你的写的不错..很经典..呵呵
作者:
紫恋
时间:
2009-11-4 00:04
stl中next_permutation就是使用的迭代算法。
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2