Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >24:蛇形填充数组

24:蛇形填充数组

作者头像
attack
发布于 2018-04-03 10:23:08
发布于 2018-04-03 10:23:08
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

24:蛇形填充数组

总时间限制: 1000ms 内存限制: 65536kB描述

用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。

蛇形填充方法为:

对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1;按编号从小到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写。

比如n=4时,方阵填充为如下形式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1  2  6  7
3  5  8  13
4  9  12 14
10 11 15 16

输入输入一个不大于10的正整数n,表示方阵的行数。输出输出该方阵,相邻两个元素之间用单个空格间隔。样例输入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4

样例输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 int tot=1;
 7 int ans=2;
 8 int now=1;// 1向下 2向上 
 9 int a[101][101];
10 int main()
11 {
12     int n;
13     cin>>n;
14     int i=1,j=2;
15     cout<<1<<" ";
16     while(tot!=n*n)
17     {
18         if(now==1)
19         {
20             
21             a[i][j]=ans;
22             ans++;    
23             tot++;
24             if(j==1||i==n)
25             {
26                 if(j==1&&i!=n)
27                 i++;
28                 else j++;
29                 now=2;
30                 continue;
31             }
32             else
33             {
34                 i++;
35                 j--;
36             }
37             
38         }
39         if(now==2)
40         {
41             
42             a[i][j]=ans;
43             ans++;
44             tot++;
45             if(i==1||j==n)
46             {
47                 if(i==1&&j!=n)
48                 j++;
49                 else i++;
50                 now=1;
51                 continue;
52             }
53             else
54             {
55                 i--;
56                 j++;    
57             }
58         }
59         else now=1;    
60     }
61     for(int i=1;i<=n;i++)
62     {
63         for(int j=1;j<=n;j++)
64         {
65             if(i==1&&j==1)continue;
66             else
67             cout<<a[i][j]<<" ";
68         }
69         cout<<endl;
70     }
71     return 0;
72 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-03-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AtCoder Beginner Contest 166 A ~~E
A 水题: #include<iostream> using namespace std; int main(){ string s; cin>>s; if(s=="ABC") cout<<"ARC"<<endl; else cout<<"ABC"<<endl; return 0; } B 水题: 主要是看懂就行,两个单词容易混淆,所以看样例理解比较好 #include<iostream> #define maxn 105 using namespace std; bool a[ma
杨鹏伟
2020/09/10
3180
1160 蛇形矩阵
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行为组成的矩阵,最后一行为
attack
2018/04/11
1K0
21:二维数组右上左下遍历
21:二维数组右上左下遍历 总时间限制: 1000ms 内存限制: 65536kB描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺
attack
2018/04/03
2K0
21:二维数组右上左下遍历
筛法求素数 6分
11:回文素数 查看 提交 统计 提问 总时间限制: 5000ms 内存限制: 65536kB描述一个数如果从左往右读和从右往左读数字是相同的,则称这个数是回文数,如121,1221,15651都是回文数。给定位数n,找出所有既是回文数又是素数的n位十进制数。(注:不考虑超过整型数范围的情况)。输入位数n,其中1<=n<=9。输出第一行输出满足条件的素数个数。 第二行按照从小到大的顺序输出所有满足条件的素数,两个数之间用一个空格区分。样例输入 1 样例输出 4 2 3 5 7 1 #include
attack
2018/04/11
9530
蛇行矩阵 蛇形填数 回形取数 蛇行系类(C语言详解+图解)
                                图a                                                                                         图b
Fivecc
2022/11/21
1.2K0
蛇行矩阵 蛇形填数 回形取数 蛇行系类(C语言详解+图解)
1083 Cantor表
题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/
attack
2018/04/11
5370
1083 Cantor表
Vijos P1066 弱弱的战壕【多解,线段树,暴力,树状数组】
弱弱的战壕 描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b。 mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒ftING...@_@)。 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT)。这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭mx的部队。 战壕都有一个保护范围,同它的攻击范围一样,它可以保护处在它左下方的战壕。所有处于它保护范围
Angel_Kitty
2018/04/09
6790
20:反反复复
20:反反复复 总时间限制: 1000ms 内存限制: 65536kB描述 Mo和Larry发明了一种信息加密方法。他们首先决定好列数,然后将信息(只包含字母)从上往下依次填入各列,并在末尾补充一些随机字母使其成为一个完整的字母矩阵。例如,若信息是“There's no place like home on a snowy night”并且有5列,Mo会写成: t o i o y h p k n n e l e a i r a h s g e c o n h s e m o t n l e w x 注意
attack
2018/04/03
9950
P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)
题目描述 农民JOHN以拥有世界上最健康的奶牛为傲。他知道每种饲料中所包含的牛所需的最低的维他命量是多少。请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少。
风骨散人Chiam
2020/10/28
5260
华为机试 HJ35 蛇形矩阵
我们可以准备一个n∗n的二维矩阵,只填充矩阵上半个三角形,而填充顺序从每行的第一列开始,每次都往右上角方向填充元素,即矩阵行坐标递减,列坐标递增,而填充的数字依次增加就行了。
ccf19881030
2022/12/31
6810
华为机试 HJ35 蛇形矩阵
Codeforces Round #674 (Div. 3) A ~ F 详细讲解
思路+题意:就是除了第一层有两个单元的话,其余的楼层都有x个单元。自己动手推一推就知道了。然后就是取余跟做除,看看在当前这层,还是下一层。不要忘了 加上第一层。
杨鹏伟
2020/10/10
3180
02:同行列对角线的格子
02:同行列对角线的格子 总时间限制: 1000ms 内存限制: 65536kB描述 输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中(行列均从1开始编号),与格子(i,j)同行、同列、同一对角线的所有格子的位置。 如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图: 第一列 第二列 第三列 第四列 第一行 (2,3) 第二行 第三行
attack
2018/04/03
2.2K0
05:素数回文数的个数
05:素数回文数的个数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 求11到n之间(包括n),既是素数又是回文数的整数有多少个。 输入一个大于11小于1000的整数n。输出11到n之间的素数回文数个数。样例输入 23 样例输出 1 提示回文数指左右对称的数,如:292,333。来源06计算概论课 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<cmat
attack
2018/04/11
9320
洛谷2017 5月月赛R1
我只想说面对这种难度的题目就是冲着20%的数据暴力。。。 分数:40+20+36.1+38+0+19 T1 签到题 III 题目背景 pj组选手zzq近日学会了求最大公约数的辗转相除法。 题目描述 类比辗转相除法,zzq定义了一个奇怪的函数: typedef long long ll; ll f(ll a,ll b) { if(a==b) return 0; if(a>b) return f(a-b,b+b)+1; else return f(a+a,b-a)+1; } zzq定义完
attack
2018/04/13
6070
洛谷2017 5月月赛R1
河南工程学院第六届程序设计竞赛-A组-题解
HF 告诉 LYS 说:“我最近学习了二分开根号!!!” LYS 说:“那我给你出一个开五次方根的题目!” HF 感觉太简单了,就来找你们解决这个问题。
浪漫主义狗
2023/12/18
2660
河南工程学院第六届程序设计竞赛-A组-题解
2017.7.15清北夏令营精英班Day1解题报告
成绩: 预计分数:20+10+40 实际分数:100+10+40. 一百三十多人的比赛全场rand7还水了个鼠标+键盘 unbelievable! 考试题目链接: https://www.luogu.
attack
2018/04/12
5850
13:大整数的因子
13:大整数的因子 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。 输入一个非负整数c,c的位数<=30。输出若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。样例输入 30 样例输出 2 3 5 6 1 #include<iostream> 2 #include<cstdio>
attack
2018/04/12
9350
23:区间内的真素数
23:区间内的真素数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。 真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。 例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数。 输入输入两个数 M 和 N,空格间隔,1 <= M <= N <= 100000。输出按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,逗号间隔。如
attack
2018/04/11
1.3K0
23:二维数组回形遍历
23:二维数组回形遍历 总时间限制: 1000ms 内存限制: 65536kB描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历
attack
2018/04/03
2K0
23:二维数组回形遍历
10:判决素数个数
10:判决素数个数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。 输入两个整数X和Y(1 <= X,Y <= 105)。输出输出一个整数,表示X,Y之间的素数个数(包括X和Y)。样例输入 1 100 样例输出 25 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using n
attack
2018/04/11
1.1K0
相关推荐
AtCoder Beginner Contest 166 A ~~E
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验