蒟蒻求助IDA*水题
查看原帖
蒟蒻求助IDA*水题
109659
Liveddd楼主2022/1/29 14:32

WA on #2 #7求调qwq

蒟蒻的代码

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn = 20;
int n;
int a[maxn], k[maxn];
int maxd;
int h()
{
    int sum = 0;
    for (int i = 1; i <= n; i++)
        sum += abs(a[i] - a[i + 1]) != 1;
    return sum;
}
void change(int x)
{
    for (int i = 1; i <= x / 2; i++)
        swap(a[i], a[x + 1 - i]);
}
bool dfs(int dep)
{
    if (!h())
        return 1;
    if (dep + h() > maxd)
        return 0;
    for (int i = 1; i <= n; i++)
    {
        change(i);
        if (dfs(dep + 1))
            return 1;
        change(i);
    }
}
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> a[i], k[i] = a[i];
    sort(k + 1, k + 1 + n);
    for (int i = 1; i <= n; i++)
        a[i] = lower_bound(k + 1, k + 1 + n, a[i]) - k;
    a[n + 1] = n + 1;
    for (maxd = 0; maxd <= n; maxd++)
        if (dfs(1))
            cout << maxd << " ";
            return 0;
    return 0;
}
2022/1/29 14:32
加载中...