zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Linux下对拍(A+B问题)
    洛谷 P1043 数字游戏 区间DP
    6.22 集训--DP复习一
    洛谷 P1220 关路灯 区间DP
    A*算法求K短路模板 POJ 2449
    点分治模板 POJ 1741
    HDU
    棋子游戏 51Nod
    数论习题总结
    CodeForces
  • 原文地址:https://www.cnblogs.com/sjymj/p/5189911.html
Copyright © 2011-2022 走看看