• 1160 蛇形矩阵(codevs)


    http://codevs.cn/problem/1160/

    题目描述 Description

    小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.

    输入描述 Input Description

    n(即n行n列)

    输出描述 Output Description

    n+1行,n行为组成的矩阵,最后一行为对角线数字之和

    样例输入 Sample Input

    3

    样例输出 Sample Output

    5 4 3
    6 1 2
    7 8 9
    25

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int ans[102][102];
    int main()
    {
        int n,x,y,sum=0;
        cin>>n;
        x=y=(n+1)/2;
        ans[x][y]=1;
        for (int i=2;i<=n;i++)
          {
              int a,b;
              if (i%2==0) b=y+1;
            else b=y-1;
              ans[x][b]=ans[x][y]+1;
              y=b;
              for (int j=1;j<i;j++)
                {
                    if (i%2==0)
                      a=x-j;
                    else a=x+j;
                    ans[a][y]=ans[x][y]+j;
                }
                x=a;
              for (int j=1;j<i;j++)
                {
                     if (i%2==0)
                        b=y-j;
                     else b=y+j;
                     ans[x][b]=ans[x][y]+j;
                }
              y=b;
          }
        for (int i=1;i<=n;i++)
         {
          for (int j=1;j<=n;j++)
            cout<<ans[i][j]<<' ';
          cout<<endl;
         }
        for (int i=1;i<=n;i++)
          sum+=(ans[i][i]+ans[i][n+1-i]);
        sum-=1;
        cout<<sum;
        return 0;
    }

    慢慢枚举就好了。

    I'm so lost but not afraid ,I've been broken and raise again
  • 相关阅读:
    包的初识与使用
    时间 随机 模块
    规范化开发
    解析Javascript事件冒泡机制
    Java垃圾回收机制
    Java 垃圾收集机制
    javac 编译与 JIT 编译
    JAVA对文件类型的校验
    多态性实现机制——静态分派与动态分派
    类加载机制
  • 原文地址:https://www.cnblogs.com/sjymj/p/5189911.html
Copyright © 2020-2023  润新知