码迷,mamicode.com
首页 > 其他好文 > 详细

(水题)蛇形矩阵

时间:2014-12-15 23:28:59      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   sp   

1160 蛇形矩阵

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
题目描述 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

数学太渣没推出来。。只能模拟做的。还debug好久。。。

思路就是从二维数组里最后一个数往里面转,也可以反着来。。

代码:

bubuko.com,布布扣
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<iostream>
 4 #define e 1e-8
 5 #include<cmath>
 6 using namespace std;
 7 int main()
 8 {
 9     int n;
10     int a[100][100];
11     memset(a,0,sizeof(a));
12     scanf("%d",&n);
13     int s=n*n,i=n-1,j=n-1;
14     while(s>0)
15     {
16         while(j>=0&&!a[i][j])a[i][j--]=s--;
17         j++;
18         i--;
19         while(i>=0&&!a[i][j])a[i--][j]=s--;
20         i++;
21         j++;
22         while(j<n&&!a[i][j])a[i][j++]=s--;
23         j--;
24         i++;
25         while(i<n&&!a[i][j])a[i++][j]=s--;
26         i--;
27         j--;
28     }
29     int k,l;
30     for(k=0; k<n; k++)
31     {
32         for(l=0; l<n-1; l++)
33             printf("%d ",a[k][l]);
34         printf("%d\n",a[k][l]);
35     }
36     int ans=0;
37     i=j=0;
38     for(int x=0; x<n; x++)
39         ans+=a[i++][j++];
40     i=0;j=n-1;
41     for(int y=0;y<n;y++)
42         ans+=a[i++][j--];
43         printf("%d\n",ans-a[n/2][n/2]);
44     return 0;
45 }
View Code

 

(水题)蛇形矩阵

标签:des   style   blog   http   io   ar   color   os   sp   

原文地址:http://www.cnblogs.com/ganhang-acm/p/4165978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!