[模拟]CODEVS-1160 蛇形矩阵

来源:互联网 发布:安捷伦66319d编程手册 编辑:程序博客网 时间:2024/06/05 16:23

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

代码

#include<iostream>using namespace std;const int maxn = 200; int x, y, n, number = 1; int a[maxn][maxn]; //矩阵 void print_a(){    int line = n;    for(int i = 1; i <= n; i ++)    {        for(int j = 1; j <= n; j ++)            cout << a[i][j] << " ";         cout << endl;    }}void print_sum() //求对角线之和{    int sum = 0;    for(int i = 1; i <= n; i ++)        sum += a[i][i] + a[i][n - i + 1];    cout << sum - 1; }void fill(int circle) //填充第circle圈{    int steps = 2*circle - 2;    for(int i = 0; i < steps; i ++) //上         a[x--][y] = ++ number;    x++;    for(int i = 0; i < steps; i ++) //左         a[x][--y] = ++ number;    for(int i = 0; i < steps; i ++) //下         a[++x][y] = ++ number;    for(int i = 0; i < steps; i ++) //右         a[x][++y] = ++number;     y++; //y多增1,正好是下一圈要填充的点的坐标 }int main(){    int circle = 2; //从第二圈开始填充    cin >> n;    x = (n + 1)/2, y = x + 1;    a[x][x] = number; //中心    while(circle*2-1 <= n)    {        fill(circle);         circle ++;      }       print_a();    print_sum(); } 
0 0
原创粉丝点击