「patjava题解」pat java
本篇文章给大家谈谈patjava题解,以及pat java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1005. 继续(3n+1)猜想pat-Java
UVa3n+1问题1.问题描述编号:100.简单描述:就是对一个整数(大于等于1),不断按照这样的规律进行运算,即如果当前数是偶数,则下一个数为当前数除以2,如果当前数为奇数,则下一个数为当前数乘3加1,整个过程直到计算到1为止.那么形成的数列的长度称为cycle-length.问题的输入是:给定一个区间[a,b]问题的输出为:输出给定区间(含端点)所以数的cycle-length的最大的cycle-length.详细描述可参见这里.2.问题分析2.1直观分析最直观的方法当然是采用蛮力法(即brute-force),将给定区间的每个数求出其cycle-length,然后在所以的cycle-length中找出最大的即可.2.2优化优化是建立在分析的基础之上.我们先对一个简单例子进行实验.例如给定区间为B[1,10],即1,2,3,4,5,6,7,8,9,10通过简单分析我们可以知道,通常较大的数具有较大的cycle-length,所以我们可以首先取A=9(为什么不取10,是因为9在一次处理后可变为28,大于10)按照给定的规律来进行如下:928147221134175226134020105168421可以看出,上面红色标记的部分,处于给定的区间内,而且它们的cycle-length显然是小于当前的数9的cycle-length,所以这些数可以从给定的区间内剔除掉,记住当前的cycle-length,于是经过一次的操作后,给定的区间变为3,6继续按照这个方法进行,直至这个区间为空,停止,其中最大的cycle-length即为所求.2.3得出算法算法的描述同2.2处优化部分的分析,具体的算法描述可见3.3.算法描述算法伪代码(类C)描述如下:functiongetMCLB[left,right];//为给定的区间mcl=0;//mcl指max-cycle-lengthwhile!B.empty(){A=getCandidate(B);//这个函数是用来找出B区间内当前最适合处理的元素,//一般是最大的奇数,即预计可能具有较大cycle-length的元素ccl=1;//ccl是指current-cycle-lengthwhile(A!=1){ccl++;A=(A%2)?(3*A+1):(A/2);iffind(B,A)//这个函数是用来判断B区间内是否存在中间结果Apop(B,A);//有则剔除}mcl=(mcl4.具体实现Cpp代码#include"iostream"usingnamespacestd;intgetCandidate(intB[],intbase,intn){inti;for(i=n-1;i=0;i--){if(((base+i)%2)(B[i]==0))returni;}for(i=n-1;i=0;i--){if(!B[i])returni;}return-1;}intnadd2(intleft,intright){intBlength=right-left+1;intlength=Blength;int*B=newint[length];for(inti=0;i0){intccl=1;intpos=getCandidate(B,left,Blength);if(pos==-1)break;B[pos]=1;length--;intA=pos+left;while(A!=1){ccl++;A=(A%2)?(3*A+1):(A/2);intApos;if((A-leftBlength)||(B[A-left])||(Aleftright)cout5.复杂性分析主要的耗时部分是二层循环部分,而外层循环的次数主要取决于内层循环在区间内的命中率.没有进行过统计学的分析,但只要candidate选取合适,每次内层循环会有大于50%的命中率.假设区间内数A的内层循环次数(即由A按照规则变为1的cycle-length)为X,平均命中率为p,那么时间复杂度为:T(n)=X*T(n*(1-p))//其中X为平均的cycle-length6.备注在实现过程中,最初使用的是C++中的vector,但运行时的实际耗时比使用数组的蛮力法还要长,经过分析,这是因为编译器在维护vector这个数据结构时所耗时长是比较大的,特别是当使用vector的earse方法来删除某个特定元素时.所以最后还是使用最基本的数组来实现,用标记来指示删除状态.所以在实际的算法实现中,数据结构的选取也是非常重要的,所谓的程序=算法+数据结构是也.可以改进的地方包括有:getCandidate函数的算法,即如何预估一个具有较长cycle-length的元素;还有当内层循环出现在区间内已标记为删除状态的元素中时,这时内层循环可终止.
名词解释pat
PAT(Programming Ablity Test)是浙江大学计算机科学与技术学院创建的一个供程序员练习编程的一个很好的平台。
PAT系统包含了一个巨大的题库,其中的题目包含了它的描述和输入和输出测试数据。用户程序需要根据输入数据得出相应的结果,系统则根据用户程序的结果与标准的输出数据相比较。对于某些答案不惟一的题目,则提供一个特殊的测试程序来评判。只有用户程序在规定的时间以及内存限制内通过全部的测试数据才算正确完成一道题目。
这个平台对要考浙江大学计算机相关专业的研究生很有帮助,通常可以通过这个平台的练习来准备复试。
作用
PAT文件可以是ACAD的定义填充图案文件.也可以是moto手机的权限文件,需上传到手机才能访问相应的java文件,甚至可以是支持亮片功能的绣花机花版数据格式,常用的是:DataCAD Hatch模式文件;CorelDRAW模式;高级Gravis Ultrasound / Forte 技术;碎片文件。
打开方式
Acrobat可以打开PAT格式的文件。
PAT是什么?
PAT考试,全称为Physics Aptitude Test,是牛津大学考试中心与英国入学考试服务中心合作开设的物理能力测试。如果想要申请牛津大学Physics, Physics and Philosophy, Engineering Science, Materials Science等相关专业的学生必须提交PAT成绩。
由于PAT是开放性考试,所以即使不报考牛津大学上述专业,学生也可以选择参加考试,优秀的PAT成绩有助于提高学生在申请牛津大学或其它英国高校物理、物理与哲学、工程与材料系时的学术竞争力。
如果想要申请牛津大学 Physics,Physics and Philosophy,Engineering Science,与Materials Science相关专业的学生必须提交PAT成绩。
考试日期:
2020年11月4日
考试时间:
PAT考试时长2小时,数学、物理两部分,每部分50分,共100分。
第1部分:物理相关数学 (Part A: Mathematics for Physics)共10小题,每小题5分(无选择题);
第2部分:物理(Part B: Physics)共10小题,每小题5分(无选择题)。
考试大纲:
基础数学:
· 将假定您具备基本数学知识,尤其是算术,包括坐标几何在内的几何以及概率的主题。问题可能需要在物理环境中操纵数学表达式。
代数:
· 了解多项式的性质,包括使用公式或因式分解的二次方程式。
· 图形草图绘制,包括使用微分查找固定点。
· 变量的转换。
· 解决不平等问题。
· 基本三角学,包括正弦,余弦和切线之间的关系(如果需要,将说明总和和差公式)。
· 对数和指数的属性,以及如何组合对数,例如log(a)+ log(b)= log(ab)。
· 掌握n个(或无限个)项的算术和几何级数之和的公式的知识。
· 对仅使用n的正整数值的(a + bx)n等表达式使用二项式展开式。
微积分:
· 多项式的微分和积分,包括分数幂和负幂。
· 微分找到一条曲线的斜率,以及最大值和最小值的位置。
· 积分是微分的逆向,是曲线下面积的发现。
· 通过对称参数简化积分,包括使用偶数和奇数函数的属性(其中偶数函数具有f(x)= f(-x),奇数函数具有f(-x)=-f(x))。
考试试卷展示:
考而思还有PAT相关辅导课程,可以帮助大家提升答题技巧。顺利通过考试!
patjava题解的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于pat java、patjava题解的信息别忘了在本站进行查找喔。
发布于:2022-12-04,除非注明,否则均为
原创文章,转载请注明出处。