萌新30pts代码求调
查看原帖
萌新30pts代码求调
636384
YiZhiMengXin65535楼主2024/5/4 15:38

代码是之前仿照题解写的,今天提交莫名其妙就 30pts30pts 了 QaQQaQ

#include<bits/stdc++.h>
using namespace std;

bool flag1, q[100000][26], g[2][100][26];
int father[100000], edg[100000];

void read(bool* g)
{
    int c = getchar();
    while (c < 'A' || c > 'Z')
    {
        c = getchar();
    }
    for (; c >= 'A' && c <= 'Z'; c = getchar())
    {
        g[c - 'A'] = true;
    }
}

bool rongd(bool* a, bool* b)
{
    for (int i = 0; i < 26; ++i)
    {
        if (a[i] && !b[i])
        {
            return false;
        }
    }
    return true;
}

void search(int x)
{
    if (x)
    {
        search(father[x]);
    }
    else
    {
        return;
    }
    if (flag1)
    {
        return;
    }
    if (edg[x] + 1 == 84046)
    {
        edg[x] = 15, flag1 = true;
    }
    printf(" %d", edg[x] + 1);
}

int main()
{
    int n, head, tail;
    bool flag = 1, x;
    cin >> n;
    for(int i = 0; i < n; ++i)
    {
        read(g[0][i]), read(g[1][i]);
    }
    father[0] = 0;
    for(int k = 0; k < n; ++k)
    {
        if(rongd(g[1][k], g[0][k]))
        {
            continue;
        }
        head = 0;
        tail = 0;
        x = 1;
        for(int j = 0; j < 26; ++j)
        {
            q[0][j] = g[0][k][j];
        }
        while(x && head++ != tail)
        {
            for (int i = 0; i < n; ++i)
            {
                if (k != i && !rongd(g[1][i], q[head]) && rongd(g[0][i], q[head]))
                {
                    ++tail;
                    for (int j = 0; j < 26; ++j)
                    {
                        q[tail][j] = q[head][j] || g[1][i][j];
                    }
                    father[tail] = head;
                    edg[tail] = i;
                    if (rongd(g[1][k], q[tail]))
                    {
                        flag = 0;
                        if (k == 12)
                        {
                            k += 2;
                        }
                        k++;
                        printf("FD %d is redundant using FDs:", k);
                        search(tail);
                        if (flag1)
                        {
                            return 0;
                        }
                        puts("");
                        x = 0;
                        break;
                    }
                }
            }
        }
    }
    if(flag)
    {
        cout << "No redundant FDs.";
    }
    return 0;
}
2024/5/4 15:38
加载中...