求助,使用VS输出和答案给的一样呀,第十个数据点还是wa......
查看原帖
求助,使用VS输出和答案给的一样呀,第十个数据点还是wa......
606023
sduoooh楼主2022/2/17 22:25

我知道我写的逻辑有点混乱,整体过于臃肿,但是我是打算ac了之后慢慢优化的......

VS运行截图如下:

代码如下:

#include<stdio.h>
int main()
{
    int p1, p2, p3;
    scanf("%d%d%d", &p1, &p2, &p3);
    char a[100] = { '0' };
    scanf("%s", a);

    for (int i = 0; a[i]; i++)
    {
        int flag = 0;
        if (a[i] == '-')
        {
            if ((int)a[i + 1] > (int)a[i - 1])
            {
                if (((int)a[i + 1] - 48) * (57 - (int)a[i + 1])>=0 && ((int)a[i - 1] - 48) * (57 - (int)a[i - 1]) >= 0) { flag = 1; }
                if (((int)a[i + 1] - 97) * (122 - (int)a[i + 1]) >= 0 && ((int)a[i - 1] - 97) * (122 - (int)a[i - 1]) >= 0) { flag = 2; }
                if (!flag)
                {
                    printf("-");
                    continue;
                }
                if (p1 == 3)
                {
                    for (int k = (int)a[i - 1] + 1; k < (int)a[i + 1]; k++)
                        for (int j = 0; j < p2; j++)
                            printf("*");
                }
                if (flag == 2)
                {
                    if (p3 == 1)
                    {
                        if (p1 == 1)
                        {
                            for (int k = (int)(a[i - 1]) + 1; k < (int)(a[i + 1]); k++)
                                for (int j = 0; j < p2; j++)
                                    printf("%c", k | 32);
                        }
                        if (p1 == 2)
                        {
                            for (int k = (int)(a[i - 1]) + 1; k < (int)(a[i + 1]); k++)
                                for (int j = 0; j < p2; j++)
                                    printf("%c", k & 95);
                        }
                    }
                    if (p3 == 2)
                    {
                        if (p1 == 1)
                            for (int k = (int)(a[i + 1]) - 1; k > (int)(a[i - 1]); k--)
                                for (int j = 0; j < p2; j++)
                                    printf("%c", k | 32);
                        if (p1 == 2)
                            for (int k = (int)(a[i + 1]) - 1; k > (int)(a[i - 1]); k--)
                                for (int j = 0; j < p2; j++)
                                    printf("%c", k & 95);
                    }
                }
                if (flag == 1)
                {
                    if (p3 == 1)
                    {
                        for (int k = (int)(a[i - 1]) + 1; k < (int)(a[i + 1]); k++)
                            for (int j = 0; j < p2; j++)
                                printf("%c", k);
                    }
                    if (p3 == 2)
                    {
                        for (int k = (int)(a[i + 1]) - 1; k > (int)(a[i - 1]); k--)
                            for (int j = 0; j < p2; j++)
                                printf("%c", k);
                    }
                }
            }
            else
            {
                printf("-");
                continue;
            }
        }
        else
            printf("%c", a[i]);
    }
    return 0;
}
2022/2/17 22:25
加载中...