3 都是在for下的if下的 4 保存结果,找下一步,回溯,这三个是一起的 5 还有一个到达目的地输出解放在外面就好
search后面的k是轮数
三个数组:
原数据数组
标记数组
储存结果数组
框架二 到目的地的情况要多加1,因为满足了的下一轮就好判断
1 /* 2 递归回溯算法框架: 3 都是在for下的if下的 4 保存结果,找下一步,回溯,这三个是一起的 5 还有一个到达目的地输出解放在外面就好 6 */ 7 /* 8 框架一 9 */ 10 int search(int k){ 11 for(int i=1;i<=算法总数;i++){ 12 if(满足条件){ 13 保存结果 14 if(到目的地) 输出解; 15 else search(k+1); 16 恢复:保存结果之前的状态(回溯一步) 17 } 18 } 19 } 20 /* 21 框架二 22 */ 23 int search(int k){ 24 if(到目的地) 输出解; 25 else 26 for(int i=1;i<=算法总数;i++){ 27 if(满足条件){ 28 保存结果 29 search(k+1); 30 恢复:保存结果之前的状态(回溯一步) 31 } 32 } 33 }
原文:http://www.cnblogs.com/Renyi-Fan/p/7118943.html