E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
机试算法
机试算法
讲解: 第38题 求Dijkstra最短路径及花费
/* 问题:n个点,m条无向边,,每条边都有长度d和花费p,给你起点s和终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条线,则输出花费最少的 输入:输入n,m,点的编号是1~n,然后是m行,每行4个数a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数s,t;起点s,终点t。n和m为0时输入 结束。1 #include #include #include
qingyuanluofeng
·
2015-08-01 14:00
dijkstra
单源最短路径
机试算法
机试算法
讲解: 第37题 Dijkstra
/* Dijkstra:单源最短路径。第m+1近的结点与结点1的最短路径上的中间节点一定属于集合K,任意最短路径中间有一个不属于集合K的节点,则它的最短路径距离一定 算法流程: 1)初始化,在集合K中加入结点1,结点1到结点1的最短距离为0,到其他结点距离为无穷大 2)遍历与集合K中结点直接相邻的边(U,V,C),其中U属于集合K,V不属于集合K,计算从结点1出发,按照已经得到的最短路径到达U,
qingyuanluofeng
·
2015-08-01 14:00
dijkstra
机试算法
机试算法
讲解:第36题 Floyd
/* 本质:求任意两点之间距离的最短值。时间复杂度为O(N^3),空间复杂度为O(N^2) 问题:每组数据第一行是两个整数N,M(N #include #include #defineMaxSize1000 #defineINT_MAX1000000 intans[MaxSize][MaxSize]; voidFloyd(intn,intiMax) { for(intk=0;k
qingyuanluofeng
·
2015-08-01 14:00
floyd
机试算法
机试算法
讲解: 第35题 欧拉回路之一笔画
/* 问题:平面有若干点,用线段将点连接,使任意两点通过一些列线段相连,给出所有点的坐标,求一种连接方法使所有线段的长度和最小,求该长度和 本质:点为图上的节点,节点之间的线段为边,权值为其长度,求最小生成树之前需要建立图 关键: 1需要建立点结构体,并且计算任意两点之间的距离,赋予边的结构体,再将边排序,求出最小生成树 2输入的类型必须也是浮点类型,接受取值的也是浮点类型。printf("%d%
qingyuanluofeng
·
2015-08-01 14:00
欧拉回路
一笔画
机试算法
机试算法
讲解: 第33题 并查集之找小伙伴
/* 问题:10000000个朋友,之中有n对朋友,朋友关系具有传递性。要求找出一个最大(人数最多)的集合,该集合中任意两人都是朋友或者只有1个人,输出最大人数 本质:比较每个并查集中元素个数,可以在根结点处设置一个数组用来保存每个根结点对应元素个数,在合并时累加被合并集合中的元素个数 输入: 4 12 34 56 16 4 12 34 56 78 输出: 4 2 */ #include #in
qingyuanluofeng
·
2015-08-01 14:00
并查集
机试算法
机试算法
讲解:第34题 并查集之求最短公路总长度
/* 问题:有任意两个村庄的距离,使全省任意两个村庄之间都可以畅通(不要求直接相连,间接联通也可以),要求铺设公路最短和次最短。请计算最小公路总长度 输入:第一行给出村庄数N( #include #include #defineN1000 intTree[N]; //设定边结构体 typedefstructEdge { int_iV1,_iV2;//设定边的起始节点 int_iWeight;//
qingyuanluofeng
·
2015-08-01 14:00
并查集
机试算法
机试算法
讲解:第32题 并查集是个好东西
/* 问题:并查集,定义数组,用双亲表示法表示各棵树。畅通工程 输入:城镇数目N( #include #include intTree[1024]; /* intfindRoot(intx) { if(-1==x) { returnx; } else { returnfindRoot(Tree[x]);//Tree[x]表示x的双亲节点编号 } } */ //路径压缩:在查找某个特定节点的根
qingyuanluofeng
·
2015-07-31 00:00
并查集
机试算法
机试算法
讲解:第31题 大整数的M进制转N进制
/* 将M进制的数X转换为N进制的数输出,2 #include #include typedefstructBigInterger{ int_digit[1000]; int_size; voidinit(); voidset(intx); //重载的返回值仍然是大数 BigIntergeroperator+(constBigInterger&x)const; BigIntergeroperat
qingyuanluofeng
·
2015-07-31 00:00
进制转换
机试算法
大整数表示
机试算法
讲解:第30题 大整数的阶乘
/* 问题:输入一个正整数,输出N的阶乘。本质:高精度乘法:将要乘的小数乘以高精度整数的每一位数并加上来自低位的仅为 输入:正整数N(0 #include typedefstructBigInterger{ int_digit[1000]; int_size; voidinit(); voidset(intiValue); BigIntergeroperator*(intiValue); voi
qingyuanluofeng
·
2015-07-31 00:00
阶乘
机试算法
大整数阶乘
机试算法
讲解:第29题 我也能做高精度整数的加法器,噢耶
/* 问题:高精度整数。实现一个加法器,使其能够输出a+b的值 输入:两个数a和b,其中a和b的位数不超过1000位 输出:多组测试数据,每组数据,输出a+b的值 输入: 26 1000000000000000000010000000000000000000000000000000 999999991 输出 8 10000000000010000000000000000000 思路: 用高
qingyuanluofeng
·
2015-07-31 00:00
机试算法
高精度整数
机试算法
讲解: 第28题 快来求a的b次幂
/* 问题:快速求a的b次幂。 求A^B得最后3位数表示的整数。说明:A^B的含义是"A的B次方" 输入:输入数据包含多个测试用例,每个实例占一行,有两个正整数A和B组成(1 intmain(intargc,char*argv[]) { intA,B; while(EOF!=scanf("%d%d",&A,&B)) { //正确性校验,如果A=0,B=0,这是不允许的 if(0==A&&0==B
qingyuanluofeng
·
2015-07-31 00:00
二分法
机试算法
机试算法
讲解: 第27题 k次方整除
/* 问题:给定n,a求最大的k,使得n!可以被a的k次方整除,但不能被a的k+1次方整除 输入:n(2 #include //#include boolmark[1001]; intprime[1001]; intprimeSize; voidinit() { inti; for(i=1;i<=1000;i++)//要注意初始值 { mark[i]=false;//false表示素数 } f
qingyuanluofeng
·
2015-07-31 00:00
k次方整除
机试算法
机试算法
讲解:第26题 分解素因数
/* 问题:质因数个数.求正整数N(>1)的质因数的个数。相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。 输入:多组测试数据,每组测试数据的输入时一个正整数N,(1=1000)//这个是用来防止溢出,因为两个大整数相乘可能溢出。这里i>=1000时,基本后面全部筛选过了 { continue; } */ #include #include intprime[10000
qingyuanluofeng
·
2015-07-31 00:00
机试算法
分解素因数
机试算法
讲解: 第25题 人人都爱素数筛选法
/* 素数筛选法: 若一个数不是素数,必定存在一个小于它的素数为其因数。假如已经获得了小于一个数的所有素数,只需确定该数不能被这些素数整除。在获得一个素数时,将它所有的倍数标记 成非素数,当遍历到一个数时,它没有被任何小于它的素数标记为非素数时,就认为它是素数。 输入:一个整数n,(2 #include intprime[10000];//保存素数 intprimeSize;//保存素数的个数
qingyuanluofeng
·
2015-07-31 00:00
素数筛选法
机试算法
机试算法
讲解:第24题 大水题:谁是素数?
/* 素数:只能被自身和1整除的大于1的正整数 假设n存在大于等于sqrt(n)的因数y,则z=n/y必同时为n的因数,且其值 #include #include boolisPrime(inta) { if(a<1) { returnfalse; } else { intiBound=(int)sqrt(a*1.0); //for(inti=2;i<=sqrt(a);i++)//技巧:耗时
qingyuanluofeng
·
2015-07-31 00:00
素数
机试算法
机试算法
讲解: 第23题 哦,最小公倍数
/* 关键:最小公倍数=两数乘积/最大公约数 */ #include #include #include //求最大公约数 intgcd(inta,intb) { if(b==0)//关键:默认b!=0,因为取模的时候b不能为0 { returna; } else { returngcd(b,a%b);//其他情况用递归 } } intmain(intargc,char*argv[]) {
qingyuanluofeng
·
2015-07-31 00:00
最小公倍数
机试算法
机试算法
讲解: 第22题 是你的最大公约数
/* 求最大公约数。同事满足a%c=0,b%c=0的最大正整数c。若a,b中有一个为0,则最大公约数为非0数。若a,b均为0,则没有最大公约数 关键: 1a=b,b=a%b缩小问题规模 输入: 4914 输出: 7 */ #include #include #include intmain(intargc,char*argv[]) { inta,b; while(EOF!=scanf("%d%
qingyuanluofeng
·
2015-07-31 00:00
gcd
最大公约数
机试算法
机试算法
讲解: 第21题 再谈进制转换
/* 求任意两个不同进制非负整数的转换,所给整数在long范围。不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1...,9,A,B,...,F) 输入: 一行,3个整数a,n,b.a表示其后的n是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,210->b a进制先转换为10进制,利用各位依次乘以10的0次方,1次方,。。。.10进制转换为进制,利
qingyuanluofeng
·
2015-07-31 00:00
进制转换
机试算法
机试算法
讲解:第20题 一起重温小学题:进制转换
/* 关键: 1打印的时候逆序打印,得到从低位到高位。m进制转换问题。 2因为每个数的范围是1000000000,所以只能用longlong不会溢出 3使用scanf和printf输出longlongYong%lld 4必须对0做特殊处理,因此这里用dowhile循环 */ #include #include #include intmain(intargc,char*argv[]) {
qingyuanluofeng
·
2015-07-31 00:00
进制转换
机试算法
机试算法
讲解: 第19题 DIY我们自己的乘法
/* 输入:12345 输出:54(1*4+1*5+2*4+2*5+3*4+3*5) 关键:利用字符串去'0'的投机取巧方法 */ #include /* intmain(intargc,char*argv[]) { intiNum1; while(EOF!=scanf("%d",&iNum1)) { intiNum2; scanf("%d",&iNum2); intiArr1[20]; in
qingyuanluofeng
·
2015-07-31 00:00
模拟算法
机试算法
整数分解
机试算法
讲解: 第18题 大家一起猜,这两个序列是同一个二叉搜索树的序列码?
/* 问题:二叉搜索树。判断2个序列是否为同一个二叉搜索树序列 输入: 开始一个数n,(1 #include #include #include typedefstructNode { Node*lchild; Node*rchild; //chariData;//这边还是只能用int类型 intiData; }Node; NodeTree[100]; intloc=0; intmid=0;
qingyuanluofeng
·
2015-07-31 00:00
二叉搜索树
机试算法
二叉搜索树的遍历
机试算法
讲解: 第17题 向着炮火前进:二叉排序树咋整啊?
/* 问题:输入一系列整数,建立二叉排序树,并进行前序,中序,后续遍历 输入:第一行为一个整数n(1 #include typedefstructNode { Node*lchild; Node*rchild; intiData; }Node; NodeTree[100]; intloc=0; Node*createNode() { Tree[loc].rchild=Tree[loc].lc
qingyuanluofeng
·
2015-07-31 00:00
二叉排序树
机试算法
建立二叉排序树
机试算法
讲解: 第16题 练练你的推理:前序和中序,你能推出后序吗?
/* 利用前序和中序,求后续遍历结果 输入: FDXEAG(前序) XDEFAG(中序):例如找到F=3(i),则前序的左子树遍历范围是:s1+1到s1+3(i),右子树遍历范围是:s1+3(i)+1到e1 输出: XEDGAF(后序) 关键: 1前序要划分,中序也要划分,前序划分长度为iRootIdx-s2,而中序就是以iRootIdx进行左右划分 2每次划分得到的是一个节点的指针 3最后用后
qingyuanluofeng
·
2015-07-31 00:00
二叉树
二叉树遍历
机试算法
机试算法
讲解: 第15题 霍夫曼树是啥树啊?
/* 问题:霍夫曼树 输入:第一行,输入一个数n,为叶节点个数,节点有权值weight 输出:所有节点的值与权值的乘积之和,2=2,每次取最小值和次最小值,构成新节点,再放入 K=1,该节点为根节点,结束循环 关键: 1使用小顶堆,用priority_queue,qreater>Q,以前使用,会将最大的放在前面,导致大顶堆 2使用权值累加:iSumWeight+=iMin+iMin1 3要将新生
qingyuanluofeng
·
2015-07-31 00:00
霍夫曼树
机试算法
机试算法
讲解: 第14题 实现一个简单计算器
/* 问题:简单的计算器,读入只含+,-,*,/的非负整数计算式,计算表达式的值 输入: 若干测试用例,每个测试用例占1行,每行 关键: 1设定数字栈和运算符栈, 遇到数字直接压入数字栈中 遇到运算符,{若当前运算符#比栈顶运算符优先级小或者栈为空,则压入当前运算符 {否则,从数字栈中弹出栈顶元素A,次栈顶元素B,计算B#A,将计算后的结果压入数字栈中 需要为该表达式设定运算符(和),两者的优
qingyuanluofeng
·
2015-07-31 00:00
栈
计算器
机试算法
机试算法
讲解: 第13题 栈之括号匹配
/* 问题:括号匹配 输入:多组数据,每组一行,一个字符串,只有左右括号和大小写字母,字串长度不超过100 输出:输入胡两行,第一行:源字符串,第二行:有$表示不匹配的左括号,?表示右括号,之间用空格 思路:使用栈,凡是左括号均进栈,凡是遇到右括号,判断栈顶是否是左括号,不是则说明发生错误,记录错误。 输入:)(rttyy())sss)( 输出:)(rttyy())sss)( ??$ 关键:
qingyuanluofeng
·
2015-07-31 00:00
栈
括号匹配
机试算法
机试算法
讲解: 第12题 贪心之我该如何选择:跑男,爸爸去哪儿,好声音,极限挑战
/* 题目:尽可能看多的电视节目,时间为整点 输入: 第一行一个整数n为喜欢看电视的节目总数,下面有n行数据,每一行数据包含2个数据Ti_s,Ti_e表示第i个节目的开始和结束时间 n=0表示输入结束,不做处理 输出:能看到电视节目的个数 输入: 12 13 34 07 38 1519 1520 1015 818 612 510 414 29 0 排序: 下标:01234567891011 1
qingyuanluofeng
·
2015-07-30 23:00
贪心
机试算法
最优安排
机试算法
讲解: 第11题 贪心之猫鼠大战
/*贪心算法 问题:M磅猫粮,N个房间,第i个房间放着J[i]的老鼠粮食,需要F[i]磅猫粮给猫来看守,如果给予猫粮:F[i]*a%,则可获得J[i]*a%的老鼠粮食 输入: 第一行:非负整数MN,接下来又N行,每一行含有1个非负整数J[i]F[i] 最后一组测试用例为:-1-1 所有的整数鼠粮/猫粮最大的,通过18元能买25斤食物,所以1斤需要18/25,后除以前,最大的即为价值最高的,1元能买
qingyuanluofeng
·
2015-07-30 23:00
贪心
机试算法
机试算法
讲解: 第10题 让我们来查询学生的信息
/* 问题:输入N个学生的信息,进行查询 输入: 4 01李江男21 02刘唐男23 03张军男19 04王娜女19 5 02 03 01 04 03 输出: 02刘唐男23 03张军男19 01李江男21 04王娜女19 03张军男19 N;学生个数, #include typedefstructStuInfo { booloperator intpartition(T*A,intlow,in
qingyuanluofeng
·
2015-07-30 23:00
查找
二分搜索
机试算法
机试算法
讲解: 第9题 查找,对了,当然有哨兵
/* 问题:输入一个数n,输入n个数值不同的数,输入给定值x,输出x在数组中的下标,从0开始,若不在数组中则输出-1 输入: 2 13 0 输出: -1 思路:用哨兵,从后向前搜索 */ #include #include #include intmain(intargc,char*argv[]) { intiNum; while(EOF!=scanf("%d",&iNum)&&iNum>=
qingyuanluofeng
·
2015-07-30 23:00
查找
哨兵
机试算法
机试算法
讲解: 第7题 打印一个梯形吧
/* 问题:输入高度h,输出高为h,上底边围h的梯形 ------------ -------------- ---------------- ------------------ -------------------- 思路: 由于多出的底边x可以设为任意值,不放设x=h 第1行,hh 第2行,打印h-1个空格,1个*,然后打印h个空格,再打印1个*h+2*1 3h-21h+2*11个*h+2
qingyuanluofeng
·
2015-07-30 23:00
打印图形
梯形
机试算法
机试算法
讲解: 第6题 给n个整数,按从大到小的顺序,输出前m大的整数
/* 问题:给n个整数,按从大到小的顺序,输出前m大的整数 0 #include #definePOS500000 intiHash[1000001]={0}; intmain(intargc,char*argv[]) { intn,m,i; while(EOF!=scanf("%d%d",&n,&m)&&m0&&m0&&n500000) { return0; } else { iHash[i
qingyuanluofeng
·
2015-07-30 23:00
哈希数组
机试算法
下标偏移
机试算法
讲解: 第5题 读入N名学生的成绩,将获得某一给定分数的学生人数输出
/* 问题:读入N名学生的成绩,将获得某一给定分数的学生人数输出 输入: 第一行:N 第二行:N名学生成绩,相邻两数字之间用一个空格间隔 第三行:给定分数 督导N=0时,结束输入,N #include #include intmain(intargc,char*argv[]) { intiNum; boolisExit=false; intiBuf[20][1000]; intiGiv[20];
qingyuanluofeng
·
2015-07-30 23:00
哈希
哈希数组
机试算法
机试算法
讲解: 第4题 某一天是星期几?
/* 问题:算出一天是星期几 思路:找到一个基点,1970年1月1日是星期几,在此基础上算出新日期和旧日期相差多少天,再除以7即可 例如19700101是星期1,那么19700108与之相差8-1=7天[1+7]%7=1即为星期一,[1+6]%7=0->转换为星期天 若为1969年12月31日,相差-1天,[1+(-1)]%7=0->认为是星期天,19891230,相差2天,[1+(-2)]%7=
qingyuanluofeng
·
2015-07-30 23:00
日期
日期运算
机试算法
某天是星期几
机试算法
讲解: 第3题 求两个日期相差的天数
/* 问题:求两个日期相差的天数,连续2天默认为一天。日期形式:YYYYMMDD 输入: 20110412 20110422 输出: 11 思路:方法1:将2个日期都应该化为绝对秒数,然后相减,用绝对秒数之差然后除以24*3600即可 易错点: time_tmktime(structtm*tmptr) doubledifftime(time_ttime1,time_ttime2) char*s
qingyuanluofeng
·
2015-07-30 23:00
结构体
日期相差天数
机试算法
机试算法
讲解:第2题 结构体之快速排序
/*题目:学生成绩排序:成绩从低到高,姓名字母从低到高(区分大小写),年龄从低到高排序输入:3abc2099bcd1997bed2097输出:bcd1997bed2097abc2099易错点:1对于字符指针,scanf("%s",ps[i].sName)不需要取地址符2对于名字,要指定大小,否则内存访问非法,charsName[128];而不是定义char*sName;3intstrcmp(con
天地一扁舟
·
2015-07-30 23:46
机试算法讲解
机试算法
讲解:第2题 结构体之快速排序
/* 题目: 学生成绩排序:成绩从低到高,姓名字母从低到高(区分大小写),年龄从低到高排序 输入: 3 abc2099 bcd1997 bed2097 输出: bcd1997 bed2097 abc2099 易错点: 1对于字符指针,scanf("%s",ps[i].sName)不需要取地址符 2对于名字,要指定大小,否则内存访问非法,charsName[128];而不是定义char*sNam
qingyuanluofeng
·
2015-07-30 23:00
快速排序
结构体
机试算法
机试算法
讲解:第1题 冒泡排序与快速排序
#include #include//rand() #include #include usingnamespacestd; //自定义降序函数 //template boolcompare(intx,inty) { returnx>y; } /* 样例输入: 4 1432 10 1985634207 29 8,31,60,33,17,4,51,57,49,35, 11,43,37,3,1
qingyuanluofeng
·
2015-07-30 23:00
冒泡排序
快速排序
机试算法
求最大连续子序列长度(阿里巴巴2015研发岗
机试算法
第一题)
阅读更多由于准备不充分,妥妥的被阿里虐了。importjava.util.Scanner;publicclassGetMaxSeqLength{/***题目:*给定一个query和一个text,均由小写字母组成。*要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。*例如,query为“acbac”,text为“acaccbabb”,*那么text中的“cba”为最长的
jkbjxy
·
2014-09-01 17:00
阿里巴巴笔试题
2015校园招聘
最大子序列长度
求最大连续子序列长度(阿里巴巴2015研发岗
机试算法
第一题)
由于准备不充分,妥妥的被阿里虐了。 import java.util.Scanner; public class GetMaxSeqLength { /** * 题目: * 给定一个query和一个text,均由小写字母组成。 * 要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。 * 例如, query为“acbac”,text为
jkbjxy
·
2014-09-01 17:00
阿里巴巴笔试题
2015校园招聘
最大子序列长度
上一页
1
2
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他