C语言面试编程题:全排列

题目内容:
 有一队待列队士兵,每个士兵有一个唯一编号,请完善以下 queues 函数,列出所有可能的列队方式,不可重复。
 请注意 queues 函数的健壮性
 例:有士兵 5, 9, 14
 可能的列队方式如下
    [5, 9, 14]
    [5, 14, 9]
    [9, 5, 14]
    [9, 14, 5]
    [14, 9, 5]
    [14, 5, 9]

/**
 * 深度优先遍历
 * 参数: soldiers  士兵编号数组
 *       count 	soldiers 中包含的士兵数量
 *       pFlag 记录每个士兵是否被选过,选过置1,否则置0
 *	 queueNo 排列序号
 *	 depth	递归到第几层
 *       temp_array 临时存放排列数的数组
 *	 return_array 士兵所有排列方式的遍历结果数组
 * 返回: void
 **/
static void dfs(int* soldiers, int count, int* pFlag, int* queueNo, int depth, int *temp_array, int *return_array){
    int i = 0;
    int j = 0;
    int x = 0;
    if (depth == count)
    {
		for(x = 0; x

 

 

你可能感兴趣的:(C语言,数据结构与算法,面试题)