试题编号: 201412-2 试题名称: Z字形扫描 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述   在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:   对于下面的4×4的矩阵,   1 5 3 9   3 7 5 6   9 4 6 4   7 3 1 3   对其进行Z字形扫描后得到长度为16的序列:   1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3   请实现一个Z字形扫描的程序,给定一个n×n的矩阵,输出对这个矩阵进行Z字形扫描的结果。 输入格式   输入的第一行包含一个整数n,表示矩阵的大小。   输入的第二行到第n+1行每行包含n个正整数,由空格分隔,表示给定的矩阵。 输出格式   输出一行,包含n×n个整数,由空格分隔,表示输入的矩阵经过Z字形扫描后的结果。 样例输入 4 1 5 3 9 3 7 5 6 9 4 6 4 7 3 1 3 样例输 继续阅读 >>


冯鑫 17/10/31 17:58:22
前言 想一想C++也学了大半年但博客没怎么写过C++方面的。一是当初自己看《C++ Primer》很懵,写博客也只是抄书,二是后来代码量上去了,踩了各种坑之后也收获的很多,更多的都是要牢牢记住的基础用法,没啥整理的必要。。。 对于C++的学习,《Effective C++》绝对是一本必看的书,但又不是和《C++ Primer》同时看,而是在有了一定的C++基础和代码量之后,对于基础语法,知识点都有所掌握,但是不知道如何正确使用C++时,再深入阅读,这时收获更多。 同时,这本书所讲述的并不是一些规定,而是有效运用C++的方法,所以需要仔细的理解和体会,因此,希望通过整理读书笔记深入理解其内容。 正文 Item 1: View C++ as a federation of Languages 这里侯捷老师翻译为“视C++为一个语言联邦”,我觉得确实很正规,也很准确,但是对于我们理解上可能并不容易(联邦。。。)。 C++,有很多人爱它,但好像更多人Diss它,在国内遍地Java培训机构,但却少有C++的培训班,我想有很大一部分原因就是C++的 继续阅读 >>


康艺杰 17/10/30 21:13:22
吐槽一下 学校这学期开始使用“SPOC+翻转课堂”的模式来教数据结构这门课。就我这段时间的体验来说,这种模式非常非常非常不负责任。虽说学习本就是自己的事情,不能寄希望于别人来督促,但这种模式让不想学习的人失去了最后的负罪感: 自己不会?组内别人帮忙解答呗~ 没写作业?反正是一组交一份作业,别人肯定会写的嘛~ 期末挂科?平时分占比那么高,拿头挂科? 当然了,我并不关心这个模式的教学效果怎样,这交给教育学家去头疼,我对此只能抱怨一下它在某种程度上加重了我不必要的课业负担(一个人做一组的作业真的是……)。 但是就这门课而言,据我在SPOC答疑区看到的一系列令人匪夷所思的问题来看,很多人,根本不知道自己在学什么。 所以,什么是数据结构? 几乎所有讲述数据结构的书中都开章明义的说: 数据结构是指对数据(操作对象)的描述。 所以,一切就这么简单,就这么一句话而已啊。计算机存储数据只能靠01两个数字,一些高级语言又为我们提供了int、double之类的基本数据类型,我们就是要靠这些东西,构建出来一套表示更复杂、更高级东西的接口。比如说,我们现 继续阅读 >>


娄泽豪 17/10/30 20:42:31
之所以将属性表拿出来单独进行讲解,就是因为在上一篇博客中我已经说过,在Class类文件中,最重要的当属常量池与属性表部分,而属性表中的属性目前已高达21项,当然我们不用全部记住它们,只需要熟悉其中的几个关键属性。 属性表基本结构 首先来看一下这21种不同的属性: 图片来源于他人博客。可以看到的是,在JDK1.5之前是只有9中基本属性的,在之后增加到了21项。 每个属性的名称都引用自常量池中一个CONSTANT_Utf8_info类型的常量来表示,属性值的结构则完全是自定义,只需要一个u4长度属性去说明属性值所占用的位数即可。 属性表结构如图: Code属性 Java方法体中的代码经过Javac编译之后,最终变为字节码存储在Code属性中,Code属性出现在方法表的属性集合之中。接口或抽象类中的方法并不存在Code属性,因为他们并没有对方法进行具体的实现。 Code属性表的结构如下图: 在这里我尝试挑几个概念上比较重要来进行记录。 max-stack,要解释清楚它,需要了解操作数栈,栈帧等知识,所以这个属性字段 继续阅读 >>


董恒毅 17/10/30 16:10:04
前言 一道由小树林引出的题,模拟题很适合练习C++。但是不知道为什么只有90分。。。 问题描述   《炉石传说:魔兽英雄传》(Hearthstone: Heroes of Warcraft,简称炉石传说)是暴雪娱乐开发的一款集换式卡牌游戏(如下图所示)。游戏在一个战斗棋盘上进行,由两名玩家轮流进行操作,本题所使用的炉石传说游戏的简化规则如下:   * 玩家会控制一些角色,每个角色有自己的生命值和攻击力。当生命值小于等于 0 时,该角色死亡。角色分为英雄和随从。   * 玩家各控制一个英雄,游戏开始时,英雄的生命值为 30,攻击力为 0。当英雄死亡时,游戏结束,英雄未死亡的一方获胜。   * 玩家可在游戏过程中召唤随从。棋盘上每方都有 7 个可用于放置随从的空位,从左到右一字排开,被称为战场。当随从死亡时,它将被从战场上移除。   * 游戏开始后,两位玩家轮流进行操作,每个玩家的连续一组操作称为一个回合。   * 每个回合中,当前玩家可进行零个或者多个以下操作:   1) 召唤随从:玩家召唤一个随从进入战场,随从具有指定的生命值和攻击力。   继续阅读 >>


康艺杰 17/10/29 13:57:00
1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 975  Solved: 419 [Submit][Status][Discuss] Description Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now require their barn to be immaculate. Farmer John, the most obliging of farmers, has no choice but hire some of the cows to clean the barn. Farmer John has N (1 <= N <= 10,000) cows who are willing 继续阅读 >>


楚东方 17/10/28 21:52:12
我们知道当服务器绑定、监听了指定端口后,内核通常会为每一个LISTEN状态的socket维护两个队列: SYN队列(半连接队列):由/proc/sys/net/ipv4/tcp_max_syn_backlog指定,表示处于 SYN_RECV 状态的队列 ACCEPT队列(全连接队列):由listen()函数的第二个参数 backlog 指定,内核硬限制由 net.core.somaxconn 限制,即实际的值由min(backlog,somaxconn) 来决定。表示已完成连接的队列,等待被 accept系统调用取走。 TCP三次握手如何与accept交互呢? 看下面这张图: 客户端使用connect向服务器发送TCP连接,三次握手就发生了。当1.1步骤 客户端首先发送SYN到达服务端后,内核会把连接信息放到SYN队列中,同时回一个SYN+ACK包给客户端。一段时间后,客户端再次发来ACK包后,内核会把连接从SYN队列中取出,再把这个连接放到ACCEPT队列中。服务器调用accept时,其实就是直接从ACCEPT队列中取出已经建立成功的连接 继续阅读 >>


杜肖孟 17/10/28 14:03:12
1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1008  Solved: 389 [Submit][Status][Discuss] Description 农场中,由于奶牛数量的迅速增长,通往奶牛宿舍的道路也出现了严重的交通拥堵问题.FJ打算找出最忙碌的道路来重点整治. 这个牧区包括一个由M (1 ≤ M ≤ 50,000)条单行道路(有向)组成的网络,以及 N (1 ≤ N ≤ 5,000)个交叉路口(编号为1..N),每一条道路连接两个不同的交叉路口.奶牛宿舍位于第N个路口.每一条道路都由编号较小的路口通向编号较大的路口.这样就可以避免网络中出现环.显而易见,所有道路都通向奶牛宿舍.而两个交叉路口可能由不止一条边连接. 在准备睡觉的时候,所有奶牛都从他们各自所在的交叉路口走向奶牛宿舍,奶牛只会在入度为0的路口,且所有入度为0的路口都会有奶牛. 帮 继续阅读 >>


楚东方 17/10/27 22:43:47
题目:https://vjudge.net/problem/HDU-1394 题目大意 给定一个序列,将前m(0-n-1)个数字移到末尾,得到一个新的序列。求所有这些序列的逆序的最小值 分析 如果知道了当前序列逆序数为sum,那么移动头元素后的逆序数将会是sum-x+(n-1-x), 那么就是怎么求当前逆序数,自然就用到了线段树。 代码 /******************************************************************** * File Name: hdu1394.cpp * Author: Sequin * mail: Catherine199787@outlook.com * Created Time: 三 9/27 11:29:02 2017 *************************************************************************/ #include <iostream> #include < 继续阅读 >>


王一妃 17/10/27 11:58:29
题目:https://vjudge.net/problem/POJ-2236 题目大意 地震了有n个电脑要修,两个电脑要连接距离不能超过d。如果AB要连接有两种情况,A直接连接B, AB不能直接连接但是A连接C,B连接C。给你两种操作,O意味着修复S意味着测试能否连接 分析 很明显是一个并查集题,模版加上一些限制就能过。 代码 #include <cstdio> #include <iostream> #include <string.h> #include <cmath> #include <cstdlib> using namespace std; #define NUM 1001 int pre[NUM]; int pos[NUM][NUM]; bool conn[NUM]; float dis[NUM]; int n, d; int find_(int x){ int t = x; while(t != pre[t]){ t 继续阅读 >>


王一妃 17/10/27 11:48:51