java编写的atm机项目结题报告_结题报告 - eason66 - 博客园
输出路径节点总和为S的路径数量。
思路
先准备数据结构:(描述思路时会用到,先给出定义和使用)
1.vector tree[100000],邻接表(把树看成DAG图)
2.int a[100000]={0},前缀和数组
3.bool color[100001]={false},dfs时使用,true代表访问过,false代表没访问过
4.int weight[100000],存储权值(邻接表不存权值)
5.set r,找根节点(r内的为可能是根节点的元素)
先读入n,s;再读入权值,并将i存入邻接表,权值存入weight。
接着读入x、y,将y插在tree[i]的后面并从集合r中删除y(y有双亲结点(父节点),不可能是根)
最后r中剩下的就是根,存起来(我的root变量),前缀和数组a[0]清零,接着进入dfs:(用递归)
将color[当前访问顶点编号(我的now变量)]置成true,表示已访问,接着计算该节点的前缀和*,然后找结点继续dfs,当结点访问完毕后,用二分搜索找前缀和数组中是否有a[现深度(deep)]-s(在dfs函数里设个变量名打成p了,不过没有关系),若有路径数量++。
*:见附录1
犯的错误
1.二分查找找的是a[deep]-s而不是s。
2.应该用递归实现dfs,而不是用栈,应为用递归比较熟练,不容易错。
3.树根不一定是零,需要找树根。
4.应该用weight数组存权值而不是tree[XX][0]。
收获
1.要注意前缀和:a[i]+a[i+1]+···+a[j]=(a[1]+a[2]+···+a[i-1])-(a[1]+a[2]+a[3]+a[4]+···+a[j])
2.在条件允许的情况下,要用自己熟练的方法解体。
3.不要想当然,不要有侥幸心理。
4.在n<=100000的情况下,不要怕多开几个数组。
附录一
这里用的前缀和是一条从根节点出发的路径上的前缀和
如上图,它原来的路径是12--11--7--6--3,现在变成了12--11--7--6--5,所以数组变成了12、23、30、36、41。
现在路径变成了12--11--7--8,数组变成了12、23、30、38、41。
由于数组是有序的,所以查找有没有路经总和为S是要用二分查找优化。
java编写的atm机项目结题报告_结题报告 - eason66 - 博客园相关推荐
- java编写的atm机项目结题报告_java编写的atm机项目结题报告.docx
java编写的atm机项目结题报告 java编写的atm机项目结题报告 篇一:java自动取款机模拟程序报告含源代码 合肥学院 计算机科学与技术系 课程设计报告 XX-XX学年第一学期 课学学专指 业 ...
- java编写的atm机项目结题报告_《计算机学院视频教程网站的创建》教学研究项目结题报告.pdf...
<计算机学院视频教程网站的创建>教学研究项目结题报告.pdf 还剩 8页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: <计算机学院 ...
- centos java 集成环境搭建,CentOS上搭建Tomcat环境并配置服务自启动 - Sonnyb - 博客园...
下载安装JDK 卸载原装的OpenJDK(如果有) # 查看是否安装Java java -version # 查看Java的安装包信息 rpm -qa | grep java # 卸载原装Java,为 ...
- java 主题爬虫_主题爬虫 - 长颈鹿Giraffe - 博客园
参考了一些论文和网上的资料以及清华大学出版社出版的<自己动手写网络爬虫>这本书中的部分章节,设计了主题爬虫的主要体系结构如下图所示: Heritrix是一个由 java 开发的.开源的网络 ...
- java synoch 加锁_线程间通信 - HappyCowboy - 博客园
线程之间需要一些协调通信,来共同完成一件任务.Java多线程中,线程之间通信最常用的两个方法是wait()与notify() 使用wait()与notify()实现线程间的通信,需注意: ①wait( ...
- java小光棍数_小光棍数 - NYNU_ACM - 博客园
小光棍数 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数.他已经知道 ...
- java圆和椭圆的关系_圆与椭圆 - brifuture - 博客园
一个单位圆的方程是 X2 + Y2 = 1,画在坐标系中: 对于圆来说,由于它是高度对称的,旋转属性对它而言意义不大. 在 canvas 画布上绘制一个圆很简单,有两种方法: 1. 使用 html5 ...
- java程序模拟atm机_Java项目实现模拟ATM机
本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...
- java个人主页作业,个人项目 - 作业 - 18软件前端、JAVA WEB方向 - 班级博客 - 博客园...
Deadline(截止时间): 2020-10-09 23:00pm 零.任务背景 目前各个团队已经开始分析需求.设计原型,不久后各团队将开始设计并开发软件,在此之前我们需要具备开发能力,所以请阅读& ...
- 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 - 左潇龙 - 博客园...
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
最新文章
- 汉语科技术语识别实验结果
- JAVA 泛型与反射
- jquery插件编写学习
- JavaScript 模拟事件触发
- IOS第七天(2:UiTableView 加上数据分离)
- C++设计模式之三 单例模式
- mysql中的编号怎么自动加_MySQL中实现ID编号自动增加的方法
- 「腾讯地图」小程序插件
- 输出100-1000之间的水仙花数 是三位数 水仙花数就是 每个位上的数字的三次方的和仍然为原数字 例如:153是一个“水仙花数“,因为153=1的三次方+5的三次方+3的三次方;
- Python实现Global Reed-Xiaoli(GRX)高光谱目标检测算法
- 方正飞鸿:OA系统先进性如何在工作流中体现
- 离职,我应该做什么?
- quartus II使用
- Python实现天气查询功能(外加Excel技巧)
- 《商业数据分析》读书笔记(一)
- android 输入法如何启动流程_android输入法状态控制
- android intent.action pick,android intent pick
- 你真的不懂 yml !
- CVPR 2022 Oral 学习不分割的内容:关于小样本分割的新视角
- OV4689 和IMX179的dts中节点的区别,以及dts节点的注释说明,基于rv1108平台