THUPC2018 icon indicating copy to clipboard operation
THUPC2018 copied to clipboard

大模拟第四个技能有问题

Open Kataang opened this issue 3 years ago • 1 comments

大模拟发动拉比哩比(rabiribi),标程没有考虑障碍物遮挡后方三角区域。仅考虑了遇到障碍物后移和出界

else if (s[i] == 4)
            {
                for (int j = 1; j <= k; j++)
                    if (check_in(j, i))
                    {
                        printf("%d is knoced from (%d,%d) to", j, x[j], y[j]);
                        x[j] += dx[d[i]];
                        y[j] += dy[d[i]];
                        while (map[x[j]][y[j]])
                        {
                            if (!x[j]) x[j] = n;
                            else if (x[j] == n + 1) x[j] = 1;
                            else if (!y[j]) y[j] = m;
                            else if (y[j] == m + 1) y[j] = 1;
                            else
                            {
                                x[j] += dx[d[i]];
                                y[j] += dy[d[i]];
                            }
                        }
                        printf(" (%d,%d)\n", x[j], y[j]);
                    }
            }

Kataang avatar Sep 04 '21 07:09 Kataang

大模拟发动拉比哩比(rabiribi),标程没有考虑障碍物遮挡后方三角区域。仅考虑了遇到障碍物后移和出界

else if (s[i] == 4)
            {
                for (int j = 1; j <= k; j++)
                    if (check_in(j, i))
                    {
                        printf("%d is knoced from (%d,%d) to", j, x[j], y[j]);
                        x[j] += dx[d[i]];
                        y[j] += dy[d[i]];
                        while (map[x[j]][y[j]])
                        {
                            if (!x[j]) x[j] = n;
                            else if (x[j] == n + 1) x[j] = 1;
                            else if (!y[j]) y[j] = m;
                            else if (y[j] == m + 1) y[j] = 1;
                            else
                            {
                                x[j] += dx[d[i]];
                                y[j] += dy[d[i]];
                            }
                        }
                        printf(" (%d,%d)\n", x[j], y[j]);
                    }
            }

这个代码是给出的标程

Kataang avatar Sep 04 '21 07:09 Kataang