社区讨论

求Dalao看看,这个哪里错了

P1205[USACO1.2] 方块转换 Transformations参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mi6ll7s6
此快照首次捕获于
2025/11/20 06:52
4 个月前
此快照最后确认于
2025/11/20 06:52
4 个月前
查看原帖
CPP
#include <stdio.h>
int n;
char s[11][11],a[11][11],b[11][11],c[11][11];
void jx(int k1,int k2)
{
    if (k1==1)
    {
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                c[i][j]=a[n-j+1][i];
    }
    else if (k1==2)
    {
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                a[i][j]=c[i][j];
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                c[i][j]=a[n-j+1][i];
    }
    else if (k1==3)
    {
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                a[i][j]=c[i][j];
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                c[i][j]=a[n-j+1][i];
    }
    else if (k1==4)
    {
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                a[i][j]=c[i][j];
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                c[i][j]=a[n-j+1][i];
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                a[i][j]=c[i][j];
        for(int i=1;i<=n;i++)
              for(int j=1;j<=n;j++)
                c[i][j]=a[i][n-j+1];
    }
    else if (k1==5)
    {
        if (k2==1)
        {
            /*for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++) printf("%c",c[i][j]);
                puts("");
            }*/
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++)
                    a[i][j]=c[i][j];
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++)
                    c[i][j]=a[n-j+1][i];
        }
        else if (k2==2)
        {
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++)
                    a[i][j]=c[i][j];
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++)
                    c[i][j]=a[n-j+1][i];
        }
        else
        {
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++)
                    a[i][j]=c[i][j];
            for (int i=1;i<=n;i++)
                for (int j=1;j<=n;j++)
                    c[i][j]=a[n-j+1][i];
        }
    }
    else if (k1==6)
    {
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                a[i][j]=c[i][j];
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                c[i][j]=a[n-j+1][i];
        for (int i=1;i<=n;i++)
            for (int j=1;j<=n;j++)
                a[i][j]=c[i][j];
        for(int i=1;i<=n;i++)
              for(int j=1;j<=n;j++)
                c[i][j]=a[i][n-j+1];
    }
}
int pd(char a[11][11],char b[11][11])
{
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            if (a[i][j]!=b[i][j]) return 0;
    return 1;
}
int main()
{
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
        scanf("\n");
        for (int j=1;j<=n;j++) scanf("%c",&a[i][j]);
    }
    for (int i=1;i<=n;i++)
    {
        scanf("\n");
        for (int j=1;j<=n;j++) scanf("%c",&b[i][j]);
    }
    for (int i=1;i<=6;i++)
    {
        if (i!=5) jx(i,0);
        else for (int j=1;j<=3;j++) jx(i,j);
        if (pd(b,c))
        {
            printf("%d",i);
            return 0;
        }
    }
    printf("7");
    return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...