编程之美——一摞烙饼的排序(暴搜+剪枝)
题目

分析
深度优先搜索遍历每一种情况,去翻转次数最小的,当然,还要加一些剪枝,毕竟O(nn)的时间复杂度。
代码
C风格
1 /**** 前缀排序 ****/
2 #include<stdio.h>
3 #include<cstring>
4 #include<algorithm>
5 using namespace std;
6
7 const int maxn = 100 + 10;
8 int n, arr[maxn]; //烙饼个数和烙饼数组
9 int arr_cmp[maxn];
10 int arr_tmp[maxn]; //记录初始数组
11
12 int search_times = 0; //总搜索次数
13 int max_swap; //最小交换次数
14 int arr_swap[2 * maxn]; //最终翻转方案
15 int tarr_swap[2 * maxn]; //当前翻转方案
16
17 void Init()
18 {
19 for (int i = 0; i < n; i++) arr_tmp[i] = arr_cmp[i] = arr[i

