试写一个算法,判断依次读入的一个以@为结束符的字符序列,是否为回文。
所谓“回文“是指正向读和反向读都一样的一字符串,如“321123”或“ableelba”。
2025/7/12 18:31:01 308KB 数据结构——回文
1
一本目前为止最好的fluent学习书本第一章流体力学基础与FLUENT简介第一节概论一、流体的密度、重度和比重二、流体的黏性——牛顿流体与非牛顿流体三、流体的压缩性——可压缩与不可压缩流体四、液体的表面张力第二节流体力学中的力与压强一、质量力与表面力二、绝对压强、相对压强与真空度三、液体的汽化压强四、静压、动压和总压第三节能量损失与总流的能量方程一、沿程损失与局部损失二、总流的伯努里方程三、人口段与充分发展段第四节流体运动的描述一、定常流动与非定常流动二、流线与迹线三、流量与净通量四、有旋流动与有势流动五、层流与湍流第五节亚音速与超音速流动一、音速与流速二、马赫数与马赫锥三、速度系数与临界参数四、可压缩流动的伯努里方程五、等熵滞止关系式第六节正激波与斜激波一、正激波二、斜激波第七节流体多维流动基本控制方程一、物质导数二、连续性方程三、N—S方程第八节边界层与物体阻力一、边界层及基本特征二、层流边界层微分方程三、边界层动量积分关系式四、物体阻力第九节湍流模型第十节FLUENT简介一、程序的结构二、FLUENT程序可以求解的问题三、用FLUENT程序求解问题的步骤四、关于FLUENT求解器的说明五、FLUENT求解方法的选择六、边界条件的确定第二章二维流动与传热的数值计算第一节冷、热水混合器内部二维流动一、前处理——利用GAMBIT建立计算模型第1步确定求解器第2步创建坐标网格图第3步由节点创建直线第4步创建圆弧边第5步创建小管嘴第6步由线组成面第7步确定边界线的内部节点分布并创建结构化网格第8步设置边界类型第9步输出网格并保存会话二、利用FLUENT进行混合器内流动与热交换的仿真计算第1步与网格相关的操作第2步建立求解模型第3步设置流体的物理属性第4步设置边界条件第5步求解第6步显示计算结果第7步使用二阶离散化方法重新计算第8步自适应性网格修改功能小结课后练习第二节喷管内二维非定常流动一、利用GAMBIT建立计算模型第1步确定求解器第2步创建坐标网格图和边界线的节点第3步由节点创建直线第4步利用圆角功能对I点处的角倒成圆弧第5步由边线创建面第6步定义边线上的节点分布第7步创建结构化网格第8步设置边界类型第9步输出网格并保存会话二、利用FLUENT进行喷管内流动的仿真计算第1步与网格相关的操作第2步确定长度单位第3步建立求解模型第4步设置流体属性第5步设置工作压强为0atm第6步设置边界条件第7步求解定常流动第8步非定常边界条件设置以及非定常流动的计算第9步求解非定常流第10步对非定常流动计算数据的保存与后处理小结课后练习第三节三角翼的可压缩外部绕流一、利用GAMBIT建立计算模型第1步启动Gambit,并选择求解器为FLUENT5/6第2步创建节点第3步由节点连成线第4步由边线创建面第5步创建网格第6步设置边界类型第7步输出网格文件二、利用FLUENT进行仿真计算第1步启动FLUENT2D求解器并读入网格文件第2步网格检查与确定长度单位第3步建立计算模型第4步设置流体材料属性第5步设置工作压强第6步设置边界条件第7步利用求解器进行求解第8步计算结果的后处理小结课后练习第四节三角翼不可压缩的外部绕流(空化模型应用)第1步启动FLUENT2D求解器并读入网格文件第2步网格检查与确定长度单位第3步设置求解器第4步设置流体材料及其物理性质第5步设置流体的流相第6步设置边界条件第7步求解第8步对计算结果的后处理小结课后练习第五节VOF模型的应用一、利用GAMBIT建立计算模型第1步启动GAMBIT并选择FLUENT5/6求解器第2步建立坐标网格并创建节点第3步由节点连成直线段第4步创建圆弧第5步创建线段的交点G第6步将两条线在G点处分别断开第7步删除DG直线和FG弧线第8步由边创建面第9步定义边线上的节点分布第10步在面上创建结构化网格第11步设置边界类型第12步输出网格文件并保存会话二、利用FLUENT2D求解器进行求解第1步读入、显示网格并设置长度单位第2步设置求解器第3步设置流体材料及属
2025/7/10 13:07:48 4.29MB 计算流体
1
使用matlab进行数据处理,数据读入,数据处理,初学者有用!!!
2025/7/7 5:40:18 403KB LIBSVM
1
其中点云数据是斯坦福兔子,做三维点云重构后的人可以好好看看,只是简单读入程序,作为初学者比较好些,进一步的研究还在后边,有机会的话会继续上传,比如说delauny三角网格划分,还想进一步研究snake曲线
2025/7/3 6:29:52 334KB 斯坦福兔子
1
车辆管理系统主要负责各种车辆的常规信息管理工作。
系统中的车辆主要有大客车、小轿车和卡车。
每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。
大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等信息。
每台车辆当月总费用=油价*耗油量/公里+基本维护费用。
基本维护费用:客车:2000元/月,小轿车:1000元/月,卡车:1500元/月功能要求:(1)添加车辆:主要完成车辆信息的添加,要求编号唯一。
当添加了重复的编号时,则提示数据添加重复并取消添加;
当车辆信息库已满,则提示不能再添加新的数据。
(2)查询车辆:可按照三种方式来查询物品,分别为: 按车辆制造公司查询:输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!”;
按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”;
按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!”;
(3)显示车辆信息库:输出当前车辆信息库中所有车辆信息,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除车辆:主要完成车辆信息的删除。
如果当前车辆信息库为空,则提示“车辆信息库为空!”,并返回操作;
否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。
(6)统计信息 输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。
(7)车辆信息存盘:将当前程序中的车辆信息存入文件中。
(8)读出车辆信息:从文件中将车辆信息读入程序。
2025/6/12 4:12:15 21KB 车辆管理系统 C++
1
课题介绍:本设计为基于MATLAB的车票识别系统。
可以识别车牌的车票号,日期,金额三个字段信息。
带有丰富的人机交互式GUI界面,实现以下功能:当车票的日期不在报销范围内提示“发票报废”;
当多张发票编号是连续的提示“发票连号,不能报销”;
当发票满足报销条件,则将多张发票金额相加。
算法流程:读入图片,利用hough变换进行倾斜矫正,感兴趣区域定位,字符识别,结果输出。
2025/6/4 20:46:40 108.15MB Matlab Matlab车票识别 Matlab发票识别 gui
1
这是一个用MFC写的哈夫曼树代码。
可以实现建树、编码输出到文件夹和从文件读入编码并显示在界面上。
还可以在界面上输出哈夫曼树的树形图。
供借鉴...
2025/6/4 19:57:56 1.92MB 哈夫曼树
1
Windows下利用live555实现H264实时流RTSP发送,利用本地文件读入模拟,环境为VS2013。
2025/5/31 16:13:08 17.67MB Windows live555 H264实时流 RTSP
1
一、实验目的:通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。
并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。
并依次输出各个单词的内部编码及单词符号自身值。
(遇到错误时可显示“Error”,然后跳过错误部分继续显示)二、实验预习提示1、词法分析器的功能和输出格式词法分析器的功能是输入源程序,输出单词符号。
词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。
本实验中,采用的是按类来安排种别码的方式。
2、部分单词的BNF表示(可参考教材43页的状态转换图)->->|||ε->->|ε->+->-->>->>=3、做词法分析器需要把对象语言的词法全部描述出来,在这我们取C语言子集,它的词法如下:(1)关键字mainifelseintreturnvoidwhile……..所有的关键字都是小写。
(2)专用符号=+-*/<=>>===!=;
:,{}[]()(3)空格和空白、制表符和换行符。
空格一般用来分隔ID、NUM、专用符号和关键字,在词法分析阶段通常被忽略。
各种单词符号的种别码,这是一种符号一个编码的设计。
只供参考!单词符号 种别码 单词符号 种别码main 2 [ 28int 1 ] 29char 3 { 30If 4 } 31else 5 , 32for 6 : 33while 7 ; 34ID 10 > 35NUM 20 = 37+ 22 +”,当前字符为’>’,此时,分析器倒底是将其分析为大于关系运算符还是大于等于关系运算符呢?显然,只有知道下一个字符是什么才能下结论。
于是分析器读入下一个字符’+’,这时可知应将’>’解释为大于运算符。
但此时,超前读了一个字符’+’,所以要回退一个字符,词法分析器才能正常运行。
在分析标识符,无符号整数等时也有类似情况。
5、模块结构见附图三、实验过程和指导:(一)准备:1.阅读课本有关章节,明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。
2.编制好程序。
3.准备好多组测试数据。
(二)上机调试:(三)程序要求:程序输入/输出示例:如源程序为C语言。
输入如下一段:main(){inta,b;a=10; b=a+20;}要求输出如右图。
(2,“main”)(5,“(”)(5,“)”)(5,“{”)(1,“int”)(2,“a”)(5,“,”)(2,“b”)(5,“;”)(2,“a”)(4,“=”)(3,“10”)(5,“;”)(2,“b”)(4,“=”)(2,“a”)(4,“+”)(3,“20”)(5,“;”)(5,“}”)说明:识别保留字:if、int、for、while、do、return、break、continue;
单词种别码为1。
其他的都识别为标识符;
单词种别码为2。
常数为无符号整形数;
单词种别码为3。
运算符包括:+、-、*、/、=、>、=、<=、!=;
单词种别码为4。
分隔符包括:,、;、{、}、(、);
单词种别码为5。
以上为参考,具体可自行增删。
程序思路(参考):这里以开始定义的C语言子集的源程序作为词法分析程序的输入数据。
在词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词”定义的源程序字符串时,将它翻译成固定长度的单词内部表示,并查填适当的信息表。
经过词法分析后,源程序字符串(源程序的外部表示)被翻译
2025/5/25 6:43:53 4KB 词法分析
1
###TIDM36x系列DSPNANDFlash启动过程详解####一、NANDFlash启动原理#####1.1DM365支持的NAND启动特性TI的TMS320DM365(以下简称DM365)多媒体处理芯片支持多种启动方式,包括NANDFlash启动。
在NANDFlash启动过程中,DM365具有一系列独特的启动特性:1.**不支持一次性全部固件下载启动**:DM365不支持一次性将所有固件数据从NANDFlash读入内存并启动,而是采用分阶段的方式。
首先从NANDFlash读取第二级启动代码(UserBootLoader,UBL)至ARM内存(ARMInternalMemory,AIM),然后执行UBL。
2.**支持最大4KB页大小的NAND**:支持的NANDFlash页大小可达4KB,这对于大多数常见的NANDFlash设备来说是足够的。
3.**支持特殊数字标志的错误检测**:在加载UBL时会进行错误检测,尝试最多24次在不同的block中寻找特殊数字标志,以确保数据的正确性。
4.**支持30KB大小的UBL**:DM365有32KB的内存用于存放启动代码,其中2KB用于RBL(ROMBootLoader)的堆栈,剩余的空间可用来存储UBL。
5.**用户可选的DMA与I-cache支持**:用户可以根据需要在RBL执行期间启用或禁用DMA和I-cache等功能。
6.**支持4位硬件ECC**:支持每512字节需要ECC位数小于或等于4位的NANDFlash,这有助于提高数据的可靠性。
7.**支持特定的NANDFlash类型**:支持那些需要片选信号在Tr读时间保持低电平的NANDFlash。
#####1.2NANDFlash启动流程NANDFlash启动流程是指从芯片上电到Linux操作系统启动的整个过程,主要包括以下几个步骤:1.**ROMBootLoader(RBL)阶段**:当DM365芯片上电或复位时,会根据BTSEL引脚的状态确定启动方式。
如果是NAND启动,则从ROM中的RBL开始执行。
RBL会初始化必要的硬件资源,如设置堆栈,关闭中断,并读取NANDFlash的ID信息以进行适当的配置。
2.**UserBootLoader(UBL)阶段**:RBL从NANDFlash读取UBL并将其复制到AIM中运行。
UBL负责进一步初始化硬件资源,如DDR内存,并为下一阶段准备环境。
3.**U-Boot阶段**:UBL从NANDFlash读取U-Boot并将其复制到DDR内存中运行。
U-Boot是完整的启动加载程序,它负责最终从NANDFlash读取Linux内核并将其复制到DDR内存中。
4.**Linux内核启动阶段**:U-Boot启动Linux内核,内核加载并运行,此时系统完成启动。
####二、NANDFlash启动的软件配合实现#####2.1UBL描述符的实现UBL描述符是UBL读取和执行的起点。
在NANDFlash中,UBL描述符通常位于特定的位置,包含UBL的起始地址和长度等信息。
RBL通过读取这些描述符来确定UBL的具体位置并加载到AIM中。
#####2.2U-Boot启动实现U-Boot是一种开源的启动加载程序,负责从NANDFlash读取Linux内核并将其加载到内存中。
U-Boot的实现依赖于UBL提供的环境,例如已经初始化的DDR内存。
#####2.3U-Boot更新UBL和U-Boot的原理U-Boot可以被用来更新UBL和自身的代码。
这一过程通常涉及到从NANDFlash读取新的代码版本,验证其完整性,并将其替换现有的UBL或U-Boot代码。
#####2.4NANDFlash没有坏块的情况在理想情况下,即NANDFlash没有坏块的情况下,启动流程会非常顺利。
RBL能够成功地从NANDFlash读取UBL,UBL也能正确地读取U-Boot,进而完成Linux内核的加载。
####三、结束语DM365的NANDFlash启动过程是一个复杂的多阶段过程,涉及ROMBootLoader(RBL)、UserBootLoader(UBL)和U-Boot等多个组件之间的协调工作。
通过对这些组件的理解和优化,可以有效地提高启动速度和系统的稳定性。
希望本文能帮助读者更好地理解DM365的NANDFlash启动过程及其背后的技术细节。
2025/5/20 15:59:25 439KB DSP NANDflash 启动过程分析
1
共 231 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡