为什么WA了,Udebug没问题
查看原帖
为什么WA了,Udebug没问题
833124
BIOS楼主2023/11/15 00:49
#include <iostream>
#include <cstring>
using namespace std;
const int INF = 0x3f3f3f3f, N = 10000;
bool v[25];
int minv, n, st[N], cnt;
char g[6][25];
void dfs(int u, int p)
{
    if (p + n >= minv)
        return;
    if (u >= 10)
        return minv = min(minv, p + n), void();
    for (int i = p + 1; i <= p + n; i++)
        if (!st[i])
        {
            for (int j = 1; j < n; j++)
                if (v[j])
                    st[i + j]++;
            dfs(u + 1, i);
            for (int j = 1; j < n; j++)
                if (v[j])
                    st[i + j]--;
            break;
        }
}
int main()
{
    while (cin >> n, n)
    {
        memset(st, 0, sizeof(st)), memset(v, false, sizeof(v));
        for (int i = 1; i <= 5; i++)
            for (int j = 1; j <= n; j++)
                cin >> g[i][j];
        for (int i = 1; i < n; i++)
            for (int j = 1; !v[i] && j <= 5; j++)
                for (int k = 1; !v[i] && k <= n - i; k++)
                    if (g[j][k] == 'X' && g[j][k] == g[j][k + i])
                        st[i] = v[i] = true;
        minv = INF, dfs(1, 0), printf("%d\n", minv);
    }
}

看了题解,感觉我俩是一个思路,难道是我得提前break有问题?

2023/11/15 00:49
加载中...