题目大意:磁盘上有n个碎片,给出n个碎片的位置,现在要用最少的步数将所有碎片放回原处,题目一定留出一个空位。
解题思路:dfs,如果当前有位置,就把前面的碎片移动到它的目标位置,注意形成环的情况。
#include <stdio.h>
#include <string.h>
const int N = 10005;
int n, c, v[N], p[N], rec;
void init() {
c = 0;
memset(p, -1, sizeof(p));
memset(v, 0, sizeof(v));
int k, a, m;
s