1.用递归求n个数的全排列
int star[]={0,1,2,3,4,5,6,8,9,10,12}; //储存要排列的n个数,0不用
#define Swap(a,b) {int temp = a; a = b; b = temp;} //交换
int num=0; //统计全排列的个数
int Perm(int begin,int end)//求数组里begin到end的全排列
{
int i;
if(begin == end) // 结束,输出一个全排列
num++; //统计全排列的个数;
else
for(i = begin;i <= end;i++)
{
Swap(star[begin],star[i]);//交换位置,逐步前提
Perm(begin+1,end);
Swap(star[begin],star[i]);//将位置还回去,对下一次排列负责
}
}
2.双向广度优先搜索
3.回溯算法
4.A算法