(水题)蛇形矩阵

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好久。。。

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

代码:

 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 }

时间: 2024-10-25 17:17:43

(水题)蛇形矩阵的相关文章

崆若的水题之--矩阵乘法(SSDFOJ0016)

http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=16 输入n个矩阵的维度和一些矩阵链乘的表达式,输出乘法的次数.如果乘法无法进行,输出error.假定A是m*n矩阵,B是n*p矩阵,则乘法的次数为m*n*p.如果矩阵A的列数不等于矩阵B的行数,则这两个矩阵无法进行乘法运算.例如:A是50*10的,B是10*20的,C是20*5的,则 A(BC)的乘法次数为10*20*5(BC的乘法次数)+50*10*5(A(BC)的乘法次数)=3

Codeforces Round #113 (Div. 2)E---Tetrahedron(矩阵,水题)

You are given a tetrahedron. Let's mark its vertices with letters A, B, C and D correspondingly. An ant is standing in the vertex D of the tetrahedron. The ant is quite active and he wouldn't stay idle. At each moment of time he makes a step from one

ACM_蛇形矩阵

蛇行矩阵 Time Limit: 4000/2000ms (Java/Others) Problem Description: 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. Input: 本题有多组数据,每组数据由一个正整数N组成.(N不大于100) Output: 对于每一组数据,输出一个N行的蛇形矩阵.两组输出之间不要额外的空行.矩阵三角中同一行的数字用一个空格分开.行尾不要多余的空格. Sample Input: 5 Sample Output: 1 3 6 10 15 2 5

蛇形矩阵

如上图所示,是一个4*4的蛇形矩阵 算法思路 由图可观察到该矩阵可分为上三角和下三角.每个三角要根据蛇形的奇偶行进行计数. 算法代码 #include <stdio.h> int main() { int a[10][10]; int n; printf("Input n:"); scanf("%d",&n); int i=0,j=0,k=0; int count=1; for(i=0;i<n;i++)/*上三角 i代表是蛇形的奇偶行*/

5.1个人赛解题报告(区间dp,按位与或,图论等水题)

这次5.1打了一场个人赛,已经连赛了三周了,有点疲惫感觉,可能自己太水了,每次都有点小紧张. 这次只解出来三道题,然而有一道按位与按位或的水题不知道思路实在是做题太少,还有就是第一题区间DP,也消耗了不少的时间,但是没有成功的写出来,还是不够熟练啊. 下面写报告 A. System Administrator time limit per test 2 seconds memory limit per test 256 megabytes input standard input output

2.4-?:转C++脑子康复水题训练

4/∞ 这里是日常的脑子康复转C++训练.真是失策啊把第一月计任务和转语言弄一起了 为了转语言刷的水题都羞耻于扔月计上凑数(这个坑用来装羞耻题 一样不放题目,需要的自行baidu.com --------------------- 1.蛇形填数 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #define MAXN 25 5 using namespace std; 6 int a[MAXN]

js实现蛇形矩阵-腾讯前端笔试题

参加腾讯前端实习生笔试,真的是被虐了千百遍,除了一条js程序题,其他半点前端都没有,都是考算法,计算机原理,数据结构.下面贴上腾讯笔试最后三大条中的一条,实现一个蛇形矩阵的输出.蛇形矩阵的什么样这里我就不多说了. var lineCount=0; var numCount=1; var lineLog=1; var doubleArray=[]; var result="result:"; var lineCountGet; function index (n) { ArrayMake

POJ2236 wireless network 【并查集水题】

前端开发whqet,csdn,王海庆,whqet,前端开发专家 今天是个好日子,2014年5月20日,表白的最佳时机,虽说孩子已经四岁.结婚已经五年,但是也不可以偷懒,于是有了这个效果. 在线研究点这里,下载收藏点这里.程序猿and程序媛,大胆秀出你的爱吧. 利用html5 canvas实现动态的文字粒子效果,效果如下. OK,简单看看原理,首先我们需要在canvas里面实现描边文字,然后利用getImageData获得描边文字的像素矩阵,将粒子效果绑定在描边文章上. 整个效果如下. html文

CF413B 水题

题意:有n个人,m个通讯设备,通讯k次.给出人可以通讯的矩阵.当一个人在某台设备通讯时,其他人可以接收,问k次通讯结束后每个人接收了多少次. 思路:开始没看清楚m的范围,如果简单暴力,通讯一次就把接收到的人加一次,这样要n*k的时间,一看就会超时.再一看m的取值范围是[1,10],所以我可以先不管是谁通讯,只要对某个设备通讯,就统计,最后一次把连接这个设备的人加上统计的值,但是通讯的那个人又不能接收,所以多加了他通讯的次数,只需在统计一下他通讯多少次就可以了. 代码: #include<stdi