麻烦问一下这次csp的第二题 为什么样例过了一交就是0分求助大佬
  • 板块学术版
  • 楼主lcrucial1f
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/2 18:35
  • 上次更新2024/6/2 21:13:47
查看原帖
麻烦问一下这次csp的第二题 为什么样例过了一交就是0分求助大佬
1298329
lcrucial1f楼主2024/6/2 18:35
#include<stdio.h>
int main()
{
    int n,m,t,b=0,p,q,d=1;
    char s[10];
    scanf("%d %d %d",&n,&m,&t);
    int a[n*m],a1[n*m];//确定所需要的数组包含元素个数
    p=n,q=m;
    for(int i=0;i<n;i++)
    {
        for(int j=0; j<m; j++)
        {
            scanf("%d",&a[b]);
            b++;
        }
    }//输入初始矩阵的元素
    gets(s);//gets和scanf相覆盖 抵消一下
    for(int i=1;i<=t;i++)
    {
        gets(s);
        if(s[0]=='1')//1的时候将转换的矩阵行列数转换成数字
        {
            p=s[2]-'0';
            q=s[4]-'0';
            continue;
        }
        if(s[0]=='2')//2的时候用一个新的数组来记录新的顺序,记录完之后交换行和列
        {
            int b1=0;
            if(d==1)
            {
                int t=p;
                for(int k=0; k<q;k++)
                {
                    for(int l=0; l<p;l++)
                    {
                        a1[b1]=a[l*q+k];
                        b1++;
                    }
                }
                p=q;
                q=t;
                d*=-1;//交换偶数次是 1奇数次是-1,用于持续变换新的数组顺序
            }
            if(d==-1)
            {
                int t=p;
                for(int k=0; k<q;k++)
                {
                    for(int l=0; l<p;l++)
                    {
                        a[b1]=a1[l*q+k];
                        b1++;
                    }
                }
                p=q;
                q=t;
                d*=-1;
            }
        }
        if(s[0]=='3'&&d==1)//根据pq的值去输出对应数组中的值
        {
            if(i!=t)
            {
                printf("%d\n",a[(s[2]-'0')*q+(s[4]-'0')]);
                continue;
            }
            else//不是最后一行的时候换行 在最后一行的时候不换行
            {
                printf("%d",a[(s[2]-'0')*q+(s[4]-'0')]);
                break;
            }
        }
        if(s[0]=='3'&&d==-1)
        {
            if(i!=t)
            {
                printf("%d\n",a1[(s[2]-'0')*q+(s[4]-'0')]);
                continue;
            }
            else
            {
                printf("%d",a1[(s[2]-'0')*q+(s[4]-'0')]);
                break;
            } 
        }
    }
}
2024/6/2 18:35
加载中...