1.8.24(待优化)

24:蛇形填充数组

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

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

蛇形填充方法为:

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

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

1  2  6  7
3  5  8  13
4  9  12 14
10 11 15 16
输入
输入一个不大于10的正整数n,表示方阵的行数。
输出
输出该方阵,相邻两个元素之间用单个空格间隔。
样例输入
4
样例输出
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
  1 /*2016年12月6日openjudge日常水题
  2      ————1.8.24     By Lxzy_Zby*/
  3 #include<cstdio>
  4 using namespace std;
  5 int a[15][15],x,y;
  6 int main()
  7 {
  8     int n,t=1;
  9     bool k=1,m=0;//设置bool变量,k表示 左下右上线,m表示上下两个三角形
 10     scanf("%d",&n);
 11     while(m==0)//m=0时处理对角线以上的三角形
 12     {
 13         if(k==1)//k=1时
 14         {
 15
 16             while(x>=0)
 17             {
 18                 if(y==n-1&&x==0)//上下两三角形分割线
 19                 {
 20                     a[x][y]=t;
 21                     t++;
 22                     x++;
 23                     m=1;
 24                     k=0;
 25                     break;
 26                 }
 27                 a[x][y]=t;
 28                 t++;
 29                 if(x-1>=0&&y+1<n)
 30                 {
 31                     x--;
 32                     y++;
 33                 }
 34                 else
 35                 {
 36                     y++;
 37                     k=0;
 38                     x--;
 39                 }
 40             }
 41             if(m==0)
 42             x++;
 43             continue;
 44         }
 45         if(k==0)//k=0时
 46         {
 47             while(y>=0)
 48             {
 49                 if(y==0&&x==n-1)//上下两三角形分割线
 50                 {
 51                     a[x][y]=t;
 52                     t++;
 53                     y++;
 54                     m=1;
 55                     k=1;
 56                     break;
 57                 }
 58                 a[x][y]=t;
 59                 t++;
 60                 if(y-1>=0&&x+1<n)
 61                 {
 62                     x++;
 63                     y--;
 64                 }
 65                 else
 66                 {
 67                     x++;
 68                     y--;
 69                     k=1;
 70                 }
 71             }
 72             if(m==0)
 73             y++;
 74             continue;
 75         }
 76     }
 77     while(m==1&&t<=n*n)//下三角形
 78     {
 79         if(k==0)//k=0
 80         {
 81             while(x<n&&t<=n*n)
 82             {
 83                 a[x][y]=t;
 84                 t++;
 85                 if(x+1<n&&y-1>=0)
 86                 {
 87                     x++;
 88                     y--;
 89                 }
 90                 else
 91                 {
 92                     y++;
 93                     x++;
 94                     k=1;
 95                 }
 96             }
 97             x--;
 98             continue;
 99         }
100         if(k==1)//k=1
101         {
102             while(y<n&&t<=n*n)
103             {
104                 a[x][y]=t;
105                 t++;
106                 if(y+1<n&&x-1>=0)
107                 {
108                     x--;
109                     y++;
110                 }
111                 else
112                 {
113                     y++;
114                     x++;
115                     k=0;
116                 }
117             }
118             y--;
119             continue;
120         }
121
122     }
123     for(int i=0;i<n;i++)
124     {
125              for(int j=0;j<n;j++)
126                   printf("%d ",a[i][j]);
127                       printf("\n");
128
129     }
130     return 0;
131 } 

时间: 2024-10-10 15:07:12

1.8.24(待优化)的相关文章

优化php性能的一点总结

图示为100个并发,请求1000次目标地址 进行测试 最重要的两个参数:Requests per second :每秒接受请求数,这里每秒接收101个请求 Time per request:一个请求用多少耗时,这里是9毫秒 第一个参数越大越好,第二个参数越小越好 优化方法之语言级性能优化1 PHP代码执行流程:  PHP代码通过zend引擎逐行扫描,成为zend引擎能理解的语法,转码解析成Opcodes,执行之后输出 如果多使用内置函数的话,在扫描和理解上时间就会快很多,Opcodes也会少一些

PHP性能优化

图示为100个并发,请求1000次目标地址 进行测试 最重要的两个参数:Requests per second :每秒接受请求数,这里每秒接收101个请求 Time per request:一个请求用多少耗时,这里是9毫秒 第一个参数越大越好,第二个参数越小越好 优化方法之语言级性能优化1 PHP代码执行流程:  PHP代码通过zend引擎逐行扫描,成为zend引擎能理解的语法,转码解析成Opcodes,执行之后输出 如果多使用内置函数的话,在扫描和理解上时间就会快很多,Opcodes也会少一些

改善JavaScript程序的188个建议

前言第1章 JavaScript语言基础建议1:警惕Unicode乱码建议2:正确辨析JavaScript句法中的词.句和段建议3:少全局变量污染建议4:注意JavaScript数据类型的特殊性 建议5:防止JavaScript自动插入分号建议6:正确处理JavaScript特殊值建议7:小心保留字的误用建议8:谨慎使用运算符建议9:不要信任hasOwnProperty建议:谨记对象空特性建议11:慎重使用伪数组建议12:避免使用with建议13:养成优化表达式的思维方式建议14:不要滥用eva

高级字符驱动程序操作之ioctl

ioctl: 用户空间原型:int ioctl(int fd, unsigned long cmd, -); "..."并非可变参数,而是可选参数,防止编译器进行类型检查. 驱动原型:int (*ioctl)(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); inode和flip是原来的fd,cmd原封不动,arg是附加参数,被关闭了类型检查. 选择ioctl的命令: 老的约定:

30个经典问题

1.mysql优化       sql语句,字段类型( 长度的含义),存储引擎的选择,事务,索引和索引的优缺点 ,        主从同步原理, 高可用.2.HA keeepalived       mysql的双机热备http://www.linuxidc.com/Linux/2013-09/90319.htm 3.负载均衡相关: LB nginx反向代理,haproxy,lvs 4.memcahe 原理 :  高可用 :  集群使用 (一致性hash含义以及具体怎么样做) memcache

linux基本命令--学习记录

1.mkdir -p 递归创建目录(-p参数代表递归创建): 2.touch 创建file: 3.cat 查看 5.vi 编辑器 6.echo >(直接覆盖) 或者<<(后面追加)单行追加 Cat追加多行内容 7.cp -ap复制目录 8.mv 移动 9.grep管道(排除) 10.head -2 文件名 显示头几行 11.sed (重要.Linux三剑客) 12.awk (重要.Linux三剑客,需要单独总结) 13.alias 别名 14.seq 生成命令(seq 100>et

页面制作注意事项

V1.1 目  录 1. 引言 2 1.1. 编写目的 3 1.2. 适用的工作人员 3 1.3. 编写的范围 3 1.4. 适用的产品范围 3 2. 页面制作注意事项 4 2.1. 代码嵌套合理 4 2.2. 标签的语义化 4 2.3. 注释内容不能使用 "--" 4 2.4. 页面宽度的定义 4 2.4.1. 采用百分比设定页面宽度 4 2.4.2. 采用固定值设定页面宽度 5 2.5. 页面内容分部显示 5 2.6. 其它CSS文件的引入 6 2.7. 属性缩写的规则 6 2.8

《编写高质量代码:改善JavaScript程序的188个建议》学习小记(一)

作者介绍: 成林,资深Web前端工程师,从事Web前端工作多年,精通CSS.HTML.JavaScript.jQuery和Ajax等Web前端技术,在实践中积累了大量的经验.推崇Web技术标准,曾经在多所高等院校和一些线下技术沙龙主讲Web标准和规范相关的课程,曾经还参与过W3C组织的标准化文档的中文编译工作.近几年来,集中精力研究和实践CSS3和 HTML 5前沿技术,在国内是该领域的先驱者之一. 其中书的目录分类为以下几部分: 第1章 JavaScript语言基础 第2章 字符串.正则表达式

(转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java中集合的思想,应该还有一个Set,是的,OC中有NSSet和NSMutableSet这两个类的,但是,这里我为什么不单独介绍了呢?因为他的操作和NSArray是非常相似的,只是他和NSArray有一个区别就是他不能放重复数据,而且他也是无序的.其他没什么了,所以就不单独介绍了,而且NSSet在后面的

CSMA-CA介绍

本文主要介绍通讯领域中CSMA相关机制,本文全部资料来自于网络. 网络通讯,必须依靠介质来传递数据,将数据调制到模拟信号上,再把此信号通过介质传递到远方.根据介质的不同,分为有线网络和无线网络.为了让世界上各种各样的网络设备生产商生产的设备互联互通,他们必须遵循一定的"通讯语言",就像一个中国人和美国人在一起,假如他们生产的设备只能够说"本国语言",那碰在一起,就是驴头不对马嘴,根本无法沟通.为了解决这个问题,IEEE组织推出了两种协议,一种适用于有线网络的IEEE