• [CCF CSP]201412-2 Z字形扫描


    这题是稍微复杂一点的小模拟,细节有点多(本人比较烦此类题目,耗时较久,算是偏难的CSP-2了

    我采用的解决办法是,将方向表示为状态,(感觉这种方法比较适合这类题)

    其次,画状态转移图(包含状态转移条件和执行语句,这一步需要细心

    然后,根据状态转移图快速编写好程序

    最后,验证样例和特殊数据(一开始写了bug,n为1时运行错误只得了90分,警惕

    状态转移图:

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    const int N=5e2+10;
    int x,y,n;
    int a[N][N];
    int main()
    {
        ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
        cin>>n;
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                cin>>a[i][j];
        x=0;y=0;
        int f=1;
        while(x!=n-1||y!=n-1)
        {
            cout<<a[x][y]<<' ';
            if(f==1)
            {
                y++;
                if(x==0) f=3;
                if(x==n-1) f=2;
            }
            else if(f==2)
            {
                x--;y++;
                if(y==n-1) f=4;
                if(x==0&&y!=n-1) f=1;
                if(x!=0&&y!=n-1) f=2;
            }
            else if(f==3)
            {
                x++;y--;
                if(x==n-1) f=1;
                if(x!=n-1&&y!=0) f=3;
                if(x!=n-1&&y==0)f=4;
            }
            else if(f==4)
            {
                x++;
                if(y==0) f=2;
                if(y==n-1) f=3;
            }
        }
        cout<<a[x][y]<<endl;
        return 0;
    }

    如果大家有其他好的方法,欢迎提出和我探讨!~

  • 相关阅读:
    C#缓存
    js 日期相减
    无法加载图片信息处理
    一些经营性的文章,写得不蛮不错
    集线器、交换机、路由器的区别
    存储过程使用建议
    存储过程优点和缺点
    杀人游戏规则介绍(1.0~5.0版本)
    C#网络编程(1) 来源出网络的资源收集
    谈谈外包软件项目的经验
  • 原文地址:https://www.cnblogs.com/Andrew-aq/p/12488297.html
Copyright © 2020-2023  润新知