一、首先,定义全局变量,我们需要2个数组实现递归功能
1.book[3]对3个卡牌是否在手中用(0,1)进行判断。
2.a[3]将1到3的卡牌存入数组中进行使用。
3.对于一共有多少种排序,我们要在 int main()和dfs()都使用count进行计数
二、其次,对int main()处理,我们一开始要从第一个箱子进行探索,就写成dfs(1),开始递归
三、进入dfs开始递归
递归格式:
void dfs(int step)
{
判断边界(条件判断)
返回
尝试每种可能 for(i=1;i<=9;i++)
{
继续下一步dfs(step+1);
}
返回
}
递归过程:1.当1进入,不满足1==3,不进入if,进入for循环,从i=1开始,将1放入箱子,1显示被拿走,循环实现1,2,3的组合
2.然后step+1满足3+1==3+1,判断不符合,count不变;
return到dfs(step+1),此时i=3,step=3,book[3]被收回,i+1=4跳出循环;
return到i=2,step=2,book[2]被收回,book[2] = 1,再循环,i++,i=3,book[3]在手上,a[step = 2] = 3,扑克3被使用,进入递归dfs(step+1=3),for循环重新开始,此时只剩book[2]可用,i=2,a[step=3] = 2,此时有1,3,2;
3.在if中完成判断,return 到book[2] = 0,收回,step = 3,进入循环,i++,i=3,book[3]不在手上,return step = 2, i=2,book[2],收回;return step = 1,i = i =1,book[1]收回,接着进入循环,i++,i=2;
依次进行分析!