
机试指南
周杰伦今天喝奶茶了吗
喜欢周杰伦,也喜欢优快云博客,这使我快乐!
展开
-
算法笔记:旧键盘问题
题目:#include<cstdio>#include<cstring>int main(){ char str1[100],str2[100]; bool hashtable[128]={false};//这里为什么是128呢?因为ASCII码共128种 gets(str1); gets(str2); int len1=strlen(str1)...原创 2019-06-17 19:08:51 · 167 阅读 · 0 评论 -
素数筛选法
一、基础例题#include<stdio.h>#include<math.h>bool judge(int x){ if(x<1) return false; int bound=(int)sqrt(x)+1; for(int i=2;i<bound;i++){ if(x%i==0) return false; } return tr...原创 2019-04-17 15:30:59 · 313 阅读 · 0 评论 -
并查集——畅通工程
题目解读:解法:#include<stdio.h>using namespace std;#define N 1000int Tree[N];int findRoot(int x){ if(Tree[x]==-1) return x; else{ int tmp=findRoot(Tree[x]); Tree[x]=tmp; return tm...原创 2019-04-17 21:52:54 · 173 阅读 · 0 评论 -
状态搜索(广度优先)平分可乐问题
题目:#include<stdio.h>#include<queue>using namespace std;struct N{ int a,b,c; int t;};queue<N> Q;bool mark[101][101][101];void AtoB(int &a,int sa,int &b,int sb){...原创 2019-05-04 15:43:17 · 368 阅读 · 0 评论 -
改编版汉诺塔问题(递归)
改变汉诺塔问题的一个条件:不允许从第一个柱子直接移动到第三个柱子上,也不允许直从第三个柱子直接移动到第一个柱子上。即:每次移动一定是移到中间杆或者从中间杆移出去。此时的解题思路是:考虑K个圆盘的移动情况。设将K个盘子从第一根柱子移动到第三根柱子共需要次移动。为了首先将初始时最底部最大的圆盘移动到第三根柱子上,首先需要将其上的K-1个圆盘移动到第三根柱子上(移动次)。这等价于移动K-1个...原创 2019-05-04 16:14:14 · 370 阅读 · 0 评论 -
深度优先搜索DFS 找迷宫出路问题
分析:确定状态三元组(x,y,t),(x,y)为当前点坐标,t为从起点走到该点所需的时间。目标状态为(dx,dy,T) 初始状态为(sx,sy,0)深度优先搜索也需要剪枝:主人公每走一步,其位置坐标的变化为X(Y)加1或者减1。那么两个坐标分量X,Y的和的奇偶性将发生变化。若起点的坐标和的奇偶性和终点坐标和的奇偶性不同,但要经过偶数秒使其到达,显然是不可能的。...原创 2019-05-04 17:00:32 · 500 阅读 · 0 评论 -
广度优先搜索 BFS
#include<stdio.h>#include<queue>using namespace std;bool mark[50][50][50];int maze[50][50][50];struct N{ int x,y,z; int t;};queue<N> Q;int go[][3]={ 1,0,0, -1,0,0, ...原创 2019-04-29 10:17:43 · 351 阅读 · 0 评论 -
最小生成树——Kruskal算法
例题1:畅通工程问题#include<stdio.h>#include<algorithm>using namespace std;#define N 101int Tree[N];int findRoot(int x){ if(Tree[x]==-1) return x; else{ int tmp=findRoot(Tree[x]...原创 2019-04-20 12:55:10 · 211 阅读 · 0 评论 -
最短路径——Floyd算法
什么是“最短路径问题”?寻找图中某两个特定结点之间的最短路径的长度。原创 2019-04-20 13:56:33 · 296 阅读 · 0 评论 -
最小公倍数
#include<stdio.h>int gcd(int a,int b){ return b!=0?gcd(b,a%b):a;//求最大公约数 }int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF){ printf("%d\n",a*b/gcd(a,b)); //输出两数乘积与最大公约数的商 ...原创 2019-04-17 15:20:01 · 170 阅读 · 0 评论 -
数位拆解
方法一:#include<stdio.h>int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF){ int buf1[20],buf2[20],size1=0,size2=0; //用buf1 buf2分别保存从两个整数中拆解出来的 while(a!=0){ buf1[size1++]=...原创 2019-04-14 17:58:13 · 269 阅读 · 0 评论 -
机试题:单词替换
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { // TODO Auto-genera...原创 2019-04-03 20:20:15 · 284 阅读 · 0 评论 -
机试题:求二叉树公共父节点
一开始,我找不到思路,还想着要不要重新构建一个二叉树,想复杂了。一看别人做的,才恍然大悟,原来可以这样:每个非子节点的左孩子和右孩子除以2(向下取整),就得到了那个节点(也就是父节点)的值。import java.util.Scanner;public class Main{ public static void main(String[] args) { // TO...原创 2019-04-03 20:39:19 · 342 阅读 · 0 评论 -
机试题:整数奇偶排序
import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); while(...原创 2019-04-09 17:57:56 · 291 阅读 · 0 评论 -
哈夫曼树
哈夫曼树概念:#include<queue>#include<stdio.h>using namespace std;priority_queue<int,vector<int>,greater<int> > Q;int main(){ int n; while(scanf("%d",&n)!=EOF){...原创 2019-04-12 21:55:45 · 138 阅读 · 0 评论 -
经典入门:排序
#include<stdio.h>int main(){ int n; int buf[100]; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d",&buf[i]); } for(int i=0;i<n;i++){ for(int j=0;j<...原创 2019-04-10 09:33:40 · 141 阅读 · 0 评论 -
栈的应用
例题一:括号匹配问题解题思路#include<stdio.h>#include<stack>using namespace std;stack<int> s;//定义一个堆栈 char str[110];//保存输入字符串 char ans[110];//保存输出字符串 int main(){ while(scanf("%s",s...原创 2019-04-13 22:09:07 · 152 阅读 · 0 评论 -
二叉树遍历
#include<stdio.h>#include<string.h>struct Node{ Node *lchild; Node *rchild; char c;}Tree[50];int loc;Node *create(){ Tree[loc].lchild=Tree[loc].rchild=NULL; return &Tree...原创 2019-04-13 22:28:56 · 220 阅读 · 0 评论 -
二叉排序树
#include<stdio.h>#include<string.h>struct Node{ Node *lchild; Node *rchild; int c;}Tree[110];int loc;Node *creat(){ Tree[loc].lchild=Tree[loc].rchild=NULL; return &Tree[lo...原创 2019-04-14 17:38:19 · 227 阅读 · 0 评论 -
机试题:计算表达式(scanf妙用)
题目描述:对于一个不存在括号的表达式进行计算输入描述: 存在多种数据,每组数据一行,表达式不存在空格示例:输入 6/2+3+3*4输出 18#include<stdio.h>int main(){ char ch; double a[1000],t; while(scanf("%lf",&t)!=EOF) { ...原创 2019-05-08 19:25:06 · 198 阅读 · 0 评论 -
递推求解:N阶楼梯问题
N阶楼梯,一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)输入N(1<=N<90)分析:把N分别等于1、2、3……的答案排列为一个数列,需要求这个数列每一个数的值。f(n)为台阶总数为n时的上台阶方式总数。当数据较小,可知f(1)=1 f(2)=2当n大于2时,我们考虑每种上台阶方式的最后一步,由于只有两种行走方式,因此它只可能是从n-1阶走...原创 2019-05-06 10:04:37 · 591 阅读 · 0 评论 -
机试题:寻找大富翁(选择排序)
今日份AC(每次做这种把题目特意包装的题就觉得出题人好可爱(*╹▽╹*))题目描述 浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.输入描述: 每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.输出描述: 请输出...原创 2019-05-15 17:29:01 · 323 阅读 · 0 评论 -
机试:统计字符
oh no!先贴出我的代码#include<stdio.h>#include<string.h>int main(){ char a[5]; char b[80]; int times[5]={0}; scanf("%s",a); if(a=="#") return 0; while(a!="#"){ scanf("%s",b);...原创 2019-05-15 20:18:55 · 135 阅读 · 0 评论 -
机试题:畅通工程(无造价)
#include<stdio.h>#define N 1000int Tree[N];int findRoot(int x){//查找某个结点所在树的根结点 if(Tree[x]==-1) return x; else{ int tmp=findRoot(Tree[x]); Tree[x]=tmp; return tmp; }}int main(){ ...原创 2019-05-25 09:46:24 · 156 阅读 · 0 评论 -
机试题:畅通工程与继续畅通工程(加造价)
畅通工程 继续畅通工程 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。 测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M (N, M < =10...原创 2019-05-25 10:53:14 · 331 阅读 · 0 评论 -
机试题:求平均年龄
题目描述班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。输入描述:第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,取值为15到25。输出描述:可能有多组测试数据,对于每组数据,输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。要输出浮点数、双精度数小数点后2...原创 2019-05-13 17:28:17 · 3199 阅读 · 1 评论 -
算法笔记——划拳
居然有半个月没有更新blog了。(⊙o⊙)…(要日日更新,时时自省。)一道有趣的题目。从小到大常在酒桌上听大人划拳,却从未深究过如何划拳。做了这道题也算涨了知识。原来划拳就是看手上比划的数字是不是两个人嘴里喊的数字之和呀。#include<stdio.h>int main(){ int adrink=0; int bdrink=0; int n; scan...原创 2019-06-16 20:43:45 · 394 阅读 · 0 评论 -
算法笔记:找考试座位号问题
题目描述每个PAT考生在参加考试时都会被分配两个座位号:一个是试机座位:另一个是考试座 位,正常情况下,考生在入场时先得到试机座位号,入座进入试机状态后,系统会显示该考 生的考试座位号,考试时考生需要换到考试座位就座.但有些考生迟到了,试机已经结束, 他们只能拿卷领到的试机座位号求助于你,从后台査出他们的考试座位号码。输入格式第一行给出一个正整数N(N<=1000);随后N行,每行给出一...原创 2019-06-17 16:53:23 · 928 阅读 · 0 评论 -
算法笔记:成绩排名问题
题目:输入:输出:#include<stdio.h>struct Student{ char name[15]; char id[15]; int score;}max,min,temp;int main(){ int n; max.score=-1; min.score=101; scanf("%d",&n); for(...原创 2019-06-17 17:18:42 · 493 阅读 · 0 评论 -
机试题:并查集——欧拉回路
题目描述 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?输入描述: 测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为...原创 2019-05-20 20:30:56 · 255 阅读 · 0 评论 -
机试题:字母统计
题目描述输入一行字符串,计算其中A-Z大写字母出现的次数输入描述:案例可能有多组,每个案例输入为一行字符串。输出描述:对每个案例按A-Z的顺序输出其中大写字母出现的次数。示例1输入DFJEIWFNQLEF0395823048+_+JDLSFJDLSJFKK输出A:0B:0C:0D:3E:2F:5G:0H:0I:1J:4K:2L...原创 2019-05-10 18:29:04 · 263 阅读 · 0 评论 -
背包问题(一):0-1背包问题
0-1背包问题是最基本的背包问题。其特点是:每一件物品至多只能选择一件,即在背包中该物品数量只有0和1两种。0-1背包问题:有一个容量为V的背包,和一些物品。这些物品分别有两个属性,体积w和价值v,每种物体只有一个。要求用这个背包装下价值尽可能多的物品,求该最大价值,背包可以不被装满。在众多方案中求解最优解,是典型的动态规划问题。用dp[i][j]表示在总体积不超过j的情况下,...原创 2019-05-06 11:13:48 · 391 阅读 · 0 评论 -
背包问题(三):多重背包问题
在此例中,对每个物品的总数量进行了限制,即多重背包问题——每个物品可取的数量为一个确定的整数。#include<stdio.h>struct E{ int w; int v;}list[2001];int dp[101];int max(int a,int b){ return a>b?a:b;}int main(){ int T; scanf("...原创 2019-05-09 08:45:44 · 950 阅读 · 0 评论 -
背包问题(二):完全背包问题
完全背包问题的特点为:每个物品可选的数量为无穷,其解法与0-1背包问题整体保持一致。题目:有一个储蓄罐 告知其空时的重量和当前重量。并给定一些钱币的价值和相应的重量,求储蓄罐最少有多少现金。求最小值 在状态转移时,dp[j]=min {dp[j-list[i].w]+list[i].v }要求所选恰好满足特定重量 初始状态dp[0]=0 其余dp[j]均为无穷或不存在#inc...原创 2019-05-07 10:22:17 · 448 阅读 · 0 评论 -
机试题:后缀子串排序
题目描述对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain输入描述:每个案例为一行字符串。输出描述:将子串排序输出示例1输入grain输出aingraininnrainstep1:生成子串step2:...原创 2019-05-19 20:29:11 · 621 阅读 · 0 评论 -
机试:完数
意外的AC题目描述 求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子(除了它自己)相加和的数。输入描述: 测试数据有多组,输入n,n数据范围不大。输出描述: 对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多...原创 2019-05-14 20:59:04 · 150 阅读 · 0 评论 -
机试:字符串链接
又一神奇的AC题目描述不用strcat 函数,自己编写一个字符串链接函数MyStrcat(char dstStr[],charsrcStr[])输入描述:两个字符串,字符串由小写字母组成。输出描述:链接后的字符串示例1输入hello worldgood morning输出helloworldgoodmorning#include&...原创 2019-05-14 21:45:24 · 238 阅读 · 0 评论 -
机试题:数字反转
题目:12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在有任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。输入描述:每行两个正整数a和b(0<a,b<=10000)。输出描述:如果满足题目的要求输出a+b的值,否则输出NO。时隔多日后的AC~ 果然,运动和Coding才能将我救赎。#include<st...原创 2019-05-07 19:42:54 · 399 阅读 · 0 评论 -
机试题:棋盘游戏 DFS
题目描述有一个6*6的棋盘,每个棋盘上都有一个数值,现在又一个起始位置和终止位置,请找出一个从起始位置到终止位置代价最小的路径:1、只能沿上下左右四个方向移动 2、总代价是没走一步的代价之和 3、每步(从a,b到c,d)的代价是c,d上的值与其在a,b上的状态的乘积 4、初始状态为1 每走一步,状态按如下公式变化:(走这步的代价%4)+1。输入描述:每组...原创 2019-05-08 18:49:34 · 437 阅读 · 0 评论 -
机试题:点菜问题(0 1背包问题)
这种大概就是套路吧import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); while(sc.hasNext()) ...原创 2019-04-09 17:36:50 · 275 阅读 · 0 评论