Java在线笔试编程(2)---模拟内存操作

科大讯飞 2017在线笔试编程题 科大讯飞在线笔试技术综合类方向:java和C++方向,编程题3*20=60分 第一道:吵架问题//20分 题目描述: 有 n个人排成了一行队列,每个人都有一个站立的方向:面向左或面向右。由于这 n个人中每个人都很讨厌其他的人,所以当两个人面对面站立时,他们会发生争吵,然后其中一个人就会被踢出队列,谁被踢出队列都是有可能的。 我们用字符 L来表示一个面向左站立的人,用字符 R来表... 阅读详情

生命不息,学习不止。题目来自某公司在线笔试编程题。

题目描述如下:物联网技术的蓬勃发展,各种传感器纷纷出现,小B所在的项目组正在开发一个物联网项目,她们在研究设计一种新的传感器,这种传感器有自己的基本处理单元,有一定的自主性,能够进行简单的数据收集、处理、存储、和传输。为降低系统功耗,保证系统可靠性和可控性,她们要对内存进行基本的管理。研究小组计划开发1个实验性内存管理器,实现对内存的分配、释放和整理。对应的接口有new 、del、def,使用的语法如下:

new size:分配size字节大小的内存块,返回该内存块的句柄handle,size为正整数;

del handle:释放句柄handle指向的内存块;

def:整理内存碎片,将所有已分配内存块按地址从低到高的顺序迁移,使空闲内存碎片在高地址端拼接在一起;

初始内存为initSize字节大小的整片空闲内存,编号为1到initSize。

new size操作中,若存在不小于size的连续空闲内存,则按照小地址优先的原则从空闲内存区域中分配size大小的内存块,标记该内存块状态为已分配,并返回指向该内存的句柄,若无法分配,则返回空(NULL)。

del handle操作释放由handle标记的内存块,标记被释放的内存状态为空闲,若handle为无效句柄,则返回ILLEGAL_OPERATION。

def 完成内存的整理工作,无返回值。

根据设计,每次成功内存分配返回的句柄为一个正整数,从1开始,依次计数。失败的存储分配操作不影响计数。

项目小组将此项任务分配给小B,小B向你求助,你能帮助她吗?

 输入描述:

输入中有多组测试数据,每组测试数据的第一行为两个正整数T和MaxMem(1<=T<=10000,1<=MaxMem<=10000),其中T为操作次数,MaxMem为初始内存大小,随后有T行操作指令。

输出描述:

对每组测试数据,按操作顺序输出操作结果,对每个new操作,在单独行中输出结果,成功时输出其返回句柄值,失败则输出NULL。若del操作失败,输出ILLEGAL_OPERATION。def不产生输出。

样例输入:

6 10
new 5
new 3
del 1
new 6
def
new 6
样例输出:

1
2
NULL
3

开始看到题目是想抓狂的,这么长,估计得好久才能理解,想放弃的,但是还是硬着头皮多看了几次,发现有点理解题目的意思了,于是就想试试,下面是我的思路,仅供参考,如果我理解有错或者有可以优化的地方,欢迎指出,共同进步!


解题思路

按照题目的意思,给你一块内存空间,你去根据不同的指令去操作这块空间。于是我就认为内存空间就相当于一个大小为MaxMem的数组,初始数组元素都为0表示没有存储内容,数组元素为1表示该空间存储了数据。

new size 操作就相当于给数组中size个的元素赋值1,存储位置从小到大;

del handle 操作就相当于给对应handle句柄的内存块赋值0;

def 操作就相当于假如相邻的存储块之间间隔假如有0,通过这个操作可以将后面的内存块往前移。为什么存储块之间会有“0”,是因为进行了del操作,导致其中的一块内存置0了,这样就会出现间隔。

以下是关键代码块:

1.存储单元

     /**
     * 存储内容到内存中
     * @param size 存储内容的大小
     * @return true表示存储成功
     */
	private static boolean save2Memory(int size) {
		boolean flag = true;
		int index = 0;
		Memory m = new Memory();
		for (int i = 0; i < memorySize; i++) {
			if (i>=position && index < size) {
				m.start = position;// 记录起始值
				memory[i] = 1;
				index++;
			}
		}
		
		if (index != size) {// 表示内存不足,存储失败
			flag = false;
			for (int i = m.start; i < memorySize; i++) {
					memory[i] = 0;
			}
		} else {
			m.end = m.start + size-1;
			position+=size;
			handle++;
			map.put(handle, m);// 添加
		}
		return flag;
	}

class Memory {
	int start;// 内存存储的开始地值
	int end;// 内存存储的结束值

}

其中第一个for循环是将内容存储到模拟内存块中,即给相应数组元素赋值1,为了保证存储内容地址从低到高,设置了个index值,记录已存储内容的大小。

循环结束后可能内存不足了,要进行判断index和size,如果存储失败了,注意应该把以前for循环赋值1的给置0,第一次我就犯了这个错误,=  =!为此需要记住每次存储块的起始位置和结束位置,因此构建了一个Memory类,有2个属性:start和end。 其中还有个position,也是起到指示下一块内存开始的存储的起始位置。

2.删除单元

  /**
     * 删除内存中指定的区域
     * @param start 起始值
     * @param end 结束值
     */
	 private static void delMemory(int start, int end) {
		for (int i = 0; i < end - start + 1; i++) {
			memory[start + i] = 0;
		}
	  }
就是将指定区域的存储内容清空,即将数组元素置0

3.整理单元

     int[] tempMemory = new int[memorySize];
     int index=0;
     for (int j = 0; j < memorySize; j++) {
	 if (memory[j] != 0) {
		tempMemory[index] = memory[j];
		index++;
	   }
     }
     position=index;//重置起始位置
     for (int j = 0; j < memorySize; j++) {
	memory[j] = tempMemory[j];
     }
整理单元的话,我这里采用的是新建了一个同等大小的内存块,通过转移数组元素的达到“整理”的目的。具体过程可以参考如下示意图:


好了,整体的关键内容就是这些了。

自己在处理的时候也遇到了这样的一个问题,就是Scanner的next()和nextLine()方法,这里也顺便写下这2个方法的总结

简而言之,next()返回的是不包含空格的字符串,以换行或者空格符为分界线接收下一个String类型变量;nextLine()返回的是包含空格的字符串。

下面给出整体实现代码

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class TestB {
	static int memorySize;
	static int handle = 0;
	static int[] memory;
	static int position=0;//目前存储所在的位置
	static Map<Integer, Memory> map = new HashMap<Integer, Memory>();

	public static void main(String[] args) {
		Scanner mScanner = new Scanner(System.in);
		int handleTimes = mScanner.nextInt();// 总共操作次数
		memorySize = mScanner.nextInt();// 总内存大小
		memory = new int[memorySize];// 模拟内存空间
		for (int i = 0; i < handleTimes; i++) {
			String input = mScanner.next();
			if (input.equals("new")) {
				int size = mScanner.nextInt();// 分配内存空间的大小
				if (save2Memory(size)) {
					System.out.println(handle);
				} else {
					System.out.println("NULL");
				}
			} else if (input.equals("del")) {// 删除存储
				int delFlag = mScanner.nextInt();// 要清除的内存区域
				if (map.get(delFlag)!=null) {
					int delStart = map.get(delFlag).start;
					int delEnd = map.get(delFlag).end;
					delMemory(delStart, delEnd);
					map.remove(delFlag);//移除
				}else{
					System.out.println("ILLEGAL_OPERATION");
				}
			} else if (input.equals("def")) {// 整理内存
				int[] tempMemory = new int[memorySize];
				int index=0;
				for (int j = 0; j < memorySize; j++) {
					if (memory[j] != 0) {
						tempMemory[index] = memory[j];
						index++;
					}
				}
				position=index;//重置起始位置
				for (int j = 0; j < memorySize; j++) {
					memory[j] = tempMemory[j];
				}
			}
		}
		
	}
    /**
     * 存储内容到内存中
     * @param size 存储内容的大小
     * @return true表示存储成功
     */
	private static boolean save2Memory(int size) {
		boolean flag = true;
		int index = 0;
		Memory m = new Memory();
		for (int i = 0; i < memorySize; i++) {
			if (i>=position && index < size) {
				m.start = position;// 记录起始值
				memory[i] = 1;
				index++;
			}
		}
		
		if (index != size) {// 表示内存不足,存储失败
			flag = false;
			for (int i = m.start; i < memorySize; i++) {
					memory[i] = 0;
			}
		} else {
			m.end = m.start + size-1;
			position+=size;
			handle++;
			map.put(handle, m);// 添加
		}
		return flag;
	}
    /**
     * 删除内存中指定的区域
     * @param start 起始值
     * @param end 结束值
     */
	private static void delMemory(int start, int end) {
		for (int i = 0; i < end - start + 1; i++) {
			memory[start + i] = 0;
		}
	}

}

class Memory {
	int start;// 内存存储的开始地值
	int end;// 内存存储的结束值

}

最后,如果对以上内容有疑惑,或者你有更好的方法,欢迎留言指出,共同进步!



2018网易在线笔试(Java方向) 前几天收到了网易的邮件,告诉我通过了简历筛选,获得了在线笔试的资格~~~开森开森,嘿嘿,,传说中的网易只喜欢985的简历,我以为我肯定没机会参加笔试呢,,之后又听说去年网易有30000多人参加在线笔试,吓得我脑子里只想着“重在过程,重在体验”,嗯~ 今天下午心情超级差,被班里的事情弄得心烦意乱,一团怒火心中烧, 不过也因此头脑特别清醒,做题状态还不错,脑子没有变呆滞。 20道选择题... 阅读详情

相关推荐

【Java编程】华为OD笔试之【DP】【内存分配】有一个简易内存池,内存按照大小粒度分类,每个粒度有若干个可用内存资源,用户会进行一系列内存申请,需要按需分配内存池中的资源,返回申请结果成功失败列表。

【华为OD】算法题目

m0_37828130的博客 1838

Java 在线编程编译工具上线,直接运行Java代码

大家好,我是小哈~周末没出去浪,花了点时间,在我的个人网站上线了一款小工具。啥工具呢?一款可以在线编译 Java 代码并运行输出结果的小工具。大家都知道,甲骨文刷 Java 版本号非常积极,这不上个月 20 版本又来了。你发任你发,我用 Java 8。狗头~每次发布新版本,小哈都会看下新特性,比如新语法啥的。这里就有个痛点,我本人机器安装的 JDK 1.8 版本,想要测试一下新语法,就不得不需要安装新的 JDK,然后切换到新的 JDK,测试完后又得切换回 1.8 版本,比较麻烦。

犬小哈 5319

【笔试在线编程踩的坑】--- OJ常见问题

OJ输入输出引言OJ概念OJ原理循环输入输出处理常见问题对于各种语言的一些基本知识关于输出格式关于时间复杂度分析关于 "我本地能通过,交上去就是不对"关于牛客网 引言 最近参加了几场笔试,可能是备战不足吧,被一些题目的输入输出给绊倒了,浪费了很多时间,甚至有些题直接通过0测试用例,但是自己的算法和代码完全没毛病,下来查阅资料,仔细梳理了一些关于输入输出的常见问题分享给大家。 OJ概念 online...

L19002S的博客 9474

OJ在线编程输入输出(Java版)

1.如果全部是数字while 中可以使用 hasNextInt()2.如果全部是字符串,可以一行一行读,使用 hasNextLine()3.如果一行中既有字符串又有数字,则可以直接读取一行,hasNextLine()。定义一个String 类型的数组,最后再按空格 spilt() ,或者其他什么要求进行分割就行。再把String 类型的数字转化成 int 类型 :Integer.parseInt()。t=M85B。

weixin_61567666的博客 2481

Java工程师笔试题整理[校招篇]

Java工程师笔试题整理[校招篇] 阿里巴巴 2016阿里巴巴2016研发工程师笔试题(四)阿里巴巴2016研发工程师笔试题(三)阿里巴巴2016研发工程师笔试题(二) 2015阿里巴巴2015实习生笔试题阿里巴巴2015系统工程师研发笔试题阿里巴巴2015基础平台研发工程师实习生笔试题阿里巴巴2015研发工程师A笔试卷阿里巴巴2015研发工程师B笔试卷 腾讯 2017腾讯...

tzllxya的博客 2633

java面经(2019京东笔试+三面)

   版权声明:本文为博主原创文章,未经博主允许不得转载。     昨天刚结束了京东2018春季实习生招聘的HR面(可能有的童鞋还没有结束),有些感触想在这里记录下来,给大家给自己日后再次参加类似的面试提供帮助。本人在北京某211学校研究生在读,参加京东春季实习生招聘主要是为毕业找工作带来方便,争取留在公司就省了毕业季的找工作慌了(本人比较怕麻烦),在此之前,我已经分别在一家小公司和一家美国公司实...

xiaomin的博客 9576

请问一下java在线编程的网站有哪一些?

​ 下面为大家整合了一些Java在线编程的的网站,个人认为都是挺好用的,整合不易,希望大家能顺手留下点赞和收藏! 废话少说,我们直接进入正题: ​

SiKi学院的博客 3万+

Visual Studio 命令提示符工具区别与使用场景

Visual Studio会提供一系列命令提示符工具,这些工具应用在哪些场景呢?本文进行了相关介绍。

cicada15的博客 3493

Java代码生成器(开源版本)

Java代码生成器,在线代码生成器,Mybatis代码生成器,开源Java代码生成器

欢迎光临 1462

海思ISP实战:YUV Sharpen参数调试全解析

本文深入解析了在海思ISP平台上进行YUV Sharpen参数调试的实战经验。文章以海思3516EV300芯片为例,详细拆解了EdgeFiltStr、TextureFreq等核心参数的作用与协同策略,并重点阐述了如何通过ISO联动调试,在图像清晰度与噪声抑制之间取得最佳平衡,为图像调试工程师提供了宝贵的避坑指南和实战参考。

grape的博客 209

LK32T102 单片机 操作GPIO实现流水灯(1)

前言: LK32T10232(32位)单片机是一款专为电机控制器和数字电源开发的高性能 MCU。采Cortex-M0 内核,最高工作频率可达 72Mhz,ADC 采样速率 达 1Msps。同时具备协处理器单元可满足各种乘法、除法、移位以及各种 复杂函数运算。 LK32T102(32位)支持单电源供电,且内嵌高精度高速及低速振荡器,以及具备 多种低功耗工作模式。同时,集成了多路增强型 PWM,多通道模拟比较 器和高速运算放大器,可满足多种电机及功率控制应用,并简化系统成本。...

qq_58676187的博客 3189

react在线文件_程序猿专用十大在线编译器(IDE)整理,干货收藏

1. CodeSandbox(基于 React 的在线代码沙盒平台) ① 主流的脚手架都支持,比如在线create-react-app,vue-cli等(在线 fork 修改),支持 github 登录(项目导入),也支持 cli 上传例子,例子可以在线访问和下载,当然也支持内嵌到其他博客等网页中。② 地址:https://codesandbox.io/③ 图示支持的脚手架 (图 1-1)编辑界面...

weixin_39531761的博客 1552

逆向分析顶象5代各类验证码类型的图片还原方法(附源码)

6.刷新滑块验证码图片,会进入之前的for循环断点,分析此处的代码会发现,该循环循环了处理了n字符串的值,取出n字符中的值并使用charCodeAt生成Unicode 编码,然后又调用了a函数,如果a函数返回true就会把之前生成的Unicode编码+1,a函数参数分别是c数组和Unicode取余32后的值,然后再把Unicode取余32后的值push进c数组,这里的n值为滑块碎片背景图的name。2.搜索"ranges":,会找到ranges赋值的地方,在此处代码断点,并点击跳过断点,结束此次调试。

老衲爱洗头的博客 1195

【牛客网-在线编程-JAVA入门篇】——开篇介绍

让我们以JAVA入门中的类型转换为例: Java有8种基本数据类型,分别是byte、short、int、long、float、double、char、boolean。这8种类型又可以划分为4个小类,每一个类型占据不同的内存空间,详细见下表:整数类型的最高位存放正负符号,1表示负、0表示非负,其余位置存放整数值。所以,根据不同整数类型的位数,我们可以推算出它的数据范围:浮点类型采用科学计数法来表示数值,对于任意的小数,我们都可以采用统一的科学计数形式表示它。0.0123 = 0.123 * 10^-112.3

退役复学在校大学生,目光所至,皆为华夏 4万+

基于YOLOv26的道路抛洒物检测系统原理实现

本文提出了一种基于YOLOv26的道路抛洒物智能检测系统,通过深度学习技术实现道路抛洒物的实时检测与分类。系统采用分层架构设计,包含视频采集、目标检测、分类评估和预警处理等模块,能够自动识别轮胎碎片、货物包装、金属零件等多种抛洒物,并根据危险程度分级预警。YOLOv26算法在检测精度和速度上的优势使其特别适合道路监控场景,结合背景建模和运动目标提取技术,有效提高了复杂道路环境下抛洒物的识别率。该系统可集成到现有智能交通监控平台,为道路安全管理提供实时决策支持。

一键难忘的博客 1253

携程滑块、点选验证码登录识别逆向

本文分析了携程登录系统的风控机制,主要包含三种验证场景:无验证码、滑块验证码和二次图标点选验证码。通过跟踪risk_inspect风控接口,发现验证流程采用标准AES加密,需提交设备指纹等加密信息。当触发验证码时,需额外提交包含轨迹坐标的verify_msg参数及token/rid参数。最终通过风控检测后,需使用一致的指纹参数和验证token完成加密登录。文章强调所有分析仅用于学习,代码实现需确保符合法律规范。

码王吴彦祖的博客 1100

2020校招Java笔试题

写在前面,几个月没怎么看过Java,昨天上午突然决定参加一下这个笔试,然后立马投了简历。晚上参加远程笔试,题目不算难,算是普通水平,算法题也没有难到不会写。但我还是把实现栈 (会写的写错最气人)的那题写错了,交完答案,重新看了一眼题,瞬间就骂自己sb,脑子当时不知道在想什么???这么简单的题,都给写错,怕是没机会参与面试了。不过也好,趁着最后一个月,多投几个简历,复习一下自己几个月没看的Java。最后,吐槽一下,纸上写代码简直是活受罪啊啊啊,强烈推荐算法题还是在线上编程比较好,另外就是我写的字太难看了(我.

Carroll的博客 4644

MimicKit 人形机器人强化学习全身模仿控制算法使用教程

本文介绍了MimicKit运动模仿算法框架的使用指南。主要内容包括:1)安装IsaacGym和依赖项;2)训练模型命令及参数说明;3)测试模型的方法;4)分布式训练配置;5)使用TensorBoard可视化日志;6)动作数据格式说明。该框架支持DeepMimic、AMP、ASE、ADD等算法,包含PPO、AWR等强化学习算法,适用于物理仿真角色动画控制研究。

机器人控制与仿真应用 1201

记一次在线笔试

几天前找java开发实习生的时候偶然看到某沃移动通信有限公司招收2020届提前批实习生。带着碰运气的想法投了下。结果过了简历筛选,通知今晚在线笔试,带着几分忐忑的心情开始,考核形式是在一个小时之内完成三道编程题,可以用C,C++,Java等实现,这里用的是java 总结:这次比试不难,明年今日前争取要把剑指offer,程序员面试宝典,编程之美过一遍

方林 1361

【数据集】30 m地表温度LST数据集

【数据集】30 m地表温度LST数据集

WW、forever的博客 1127

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

在线笔试的诀窍

循环输入输出处理常见问题 1、为什么需要循环输入输出:通常来说OJ对于每道题里面有.in和.out文件,分别表示测试数据的输入和输出。如果某些编程题的所有数据都只做在一个.in和一个.out中,这样就会变成多组测试了,所以需要提交的代码中循环处理。 2、处理方法:其实这个问题可以避免,就是编程题后台每个样例做一组对应的.in和.out文件,这样就变成单组测试,代码就不需要循

Charles' home 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

招银笔试编程--成就完成

前段时间做了一下招银的在线笔试,里面有道成就完成的编程题,当时没有完全做对,有部分测试没通过,事后完善了一下。 题目:n个成就,第i天完成第i个成就,但是当次成就可能需要完成前置成就,如果之前完成了所有成就,之后当天可以休息。 例子: 输入: 5 2 3 5 1 4 2 2 5 0 1 4 输出: 4 1...

青木宫的博客 9655

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ShowMeBug 在线笔试“一键自动评卷“正式上线

秋招还在如火如荼地进行中,你招到合适的技术小伙伴了吗? 对绝大多数公司来说,不论是创业公司,还是大厂,都会在筛选完简历之后、面试候选人之前,选择先给候选人发一套笔试题。 这虽然提高了进入面试的候选人的质量,提高了面试成功率,但是这中间的各个环节:出题、发卷、评卷,又增加了很多的工作量。 怎么办呢? ShowMeBug 在线笔试系统上线了“一键自动评卷”功能,支持选择题和编程题自动评卷,把评卷环节交给机器,彻底解放HR和面试官的双手,同时减少HR和面试官的沟通磨合成本。 以前,对于选择题来说,HR需要手动打

ShowMeBug的博客 2339

2019网易在线笔试(Java方向)秋招第一批

文章目录2019网易在线笔试(Java方向)10道选择题知识点四题编程题目(题目基本忘了不能拷贝,只有代码了) 2019网易在线笔试(Java方向) 10道选择题知识点 Linux 文件权限的问题,不针对权限不同是否可读可写操作 最短路径 floyd 和 dijkstra 两个算法比较 进程同步里的型号量的取值范围 循环链表的插入删除,头尾指针的变化 还有网络协议的知识,我的题目是邮件的协议 其...

笨鸟在编码 836

2017年小红书在线笔试编程第二题

2017年小红书在线笔试编程第二题题目描述 给定一个字符串s和整形数字k,需要将没2k个字符中前k个字符进行翻转。当剩余字符不足k个字符时,翻转全部字符;当剩余的字符数大于等于k个字符并小于2k个字符时,则翻转前k个字符,剩余字符保持原状,字符串中只包含英文小写字母,长度不超过10000输入描述 字符串s和整型数字k输出描述 翻转后的字符串实例1 输入 abcdefg 2 输出 bac

quce的博客 1746
上一篇: java List多字段排序
下一篇: 笔试实践2---2017年网易在线笔试之编程题
android_cmos
博客等级 码龄12年 177粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值