算法学习之路

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算法

猜你喜欢

转载自blog.csdn.net/samsara_of_ice/article/details/82707615