救救我,我真的不知道哪错了
  • 板块学术版
  • 楼主wwwwwuuuu
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/1/13 10:18
  • 上次更新2023/10/28 12:27:01
查看原帖
救救我,我真的不知道哪错了
660875
wwwwwuuuu楼主2022/1/13 10:18

这是题目:https://www.luogu.com.cn/problem/P1101

#include<stdio.h>
int main()
{
    char a[100000],b[200][200];
    int n,k=1;
    scanf("%d",&n);
    for(int j=1; j<=n; j++)
    {
        for(int i=1; i<=n; i++)
        {
            scanf(" %c",&b[j][i]);
            if(b[j][i]!='\n')//将二维数组转化为一维数组
            {
                a[k]=b[j][i];
                k++;
            }
        }
    }

    for(int i=1; i<k; i++)
    {
        if(a[i]=='y')//字符串顺序相连
        {
            if(a[i+1]=='i'&&a[i+2]=='z'&&a[i+3]=='h'&&a[i+4]=='o'&&a[i+5]=='n'&&a[i+6]=='g')//字符串横向相连
            {
                for(int j=0; j<7; j++)
                    a[i+j]-=32;
            }
            else if(a[i+(n+1)]=='i'&&a[i+2*(n+1)]=='z'&&a[i+3*(n+1)]=='h'&&a[i+4*(n+1)]=='o'&&a[i+5*(n+1)]=='n'&&a[i+6*(n+1)]=='g')//字符串斜向相连
            {
                for(int j=0; j<7; j++)
                    a[i+(n+1)*j]-=32;
            }
            else if(a[i+n]=='i'&&a[i+2*n]=='z'&&a[i+3*n]=='h'&&a[i+4*n]=='o'&&a[i+5*n]=='n'&&a[i+6*n]=='g')//字符串竖向相连
            {
                for(int j=0; j<7; j++)
                    a[i+n*j]-=32;
            }
        }
        else if(a[i]=='g')//字符串逆序相连
        {
            if(a[i+1]=='n'&&a[i+2]=='o'&&a[i+3]=='h'&&a[i+4]=='z'&&a[i+5]=='i'&&a[i+6]=='y')//字符串横向相连
            {
                for(int j=0; j<7; j++)
                    a[i+j]-=32;
            }
             else if(a[i+(n+1)]=='n'&&a[i+2*(n+1)]=='o'&&a[i+3*(n+1)]=='h'&&a[i+4*(n+1)]=='z'&&a[i+5*(n+1)]=='i'&&a[i+6*(n+1)]=='y')//字符串斜向相连
            {
                for(int j=0; j<7; j++)
                    a[i+(n+1)*j]-=32;
            }
            else if(a[i+n]=='n'&&a[i+2*n]=='o'&&a[i+3*n]=='h'&&a[i+4*n]=='z'&&a[i+5*n]=='i'&&a[i+6*n]=='y')//字符串竖向相连
            {
                for(int j=0; j<7; j++)
                    a[i+n*j]-=32;
            }
        }
    }
    for(int i=1;i<k;i++)
    {
        if(a[i]>=97)
            printf("*");
        else
            printf("%c",a[i]+32);
        if(i%n==0&&i!=n*n)
            printf("\n");
    }
    return 0;
}
这个题的思路就是我发现这个字符串顺序或逆序要么横着连,要么竖着连,要么斜着连然后我把二位转一维,再判断特定的位置是不是有特定的字母就好,为啥交上去只过了80,我可太难过了,求求大佬帮帮我吧。
2022/1/13 10:18
加载中...