看了一下,我就稍微地解释一下吧!如果不对请高手指正:
第一个函数是判断是否是规定的输出顺序;
第二个函数是用于输出结果;
第三个函数:
程序代码:
void search(int * r, int deep)
{
int i, j, t;
if(deep == ROW_LEN && judge(r)) //判断是否为递归结束条件并且判断是否是规定的输出顺序
{
print_row(r);
return;
}
for(i = deep; i < ROW_LEN; i++)
for(j = i; j < ROW_LEN; j++)
{
t = r[i]; r[i] = r[j]; r[j] = t; //对数组全排序
search(r, deep + 1);
t = r[i]; r[i] = r[j]; r[j] = t;
}
}
第四个就不说了
楼主并没说每排有多少人;f所在的位置可能是第一排的第1,2,3。。。。。。。。。n个
其它的一样,
也就是说题目没对f所在的列没有约束,其它也一样
那么输出顺序为feabcd的就有好多种;(因为它们列的位置不同)
比如f在第一排的第二列;
e在第二排的3列
a在第三排的第一列
b在第四排的1列
c在第五排的1列
d在第六排的1列
看来要有人来给楼主解释代码
[
本帖最后由 heishu 于 2012-10-9 21:45 编辑 ]