PAT 2018年浙大复试机试

2024-06-19 16:18
文章标签 浙大 2018 pat 机试 复试

本文主要是介绍PAT 2018年浙大复试机试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 PAT 甲级 1144 The Missing Number

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int vec[N];
int main() {int n; cin>>n;for(int i=0; i<n; ++i) {cin>>vec[i];}for(int i=0; i<n; ++i) {if(vec[i]<=0 ||vec[i]>n){vec[i] = n+1;}}for(int i=0; i<n; ++i) {int hash_key = abs(vec[i]);if(hash_key != n+1) {if(vec[hash_key-1] > 0){vec[hash_key-1] *= -1;}}}int ans = n+1;for(int i=0; i<n; ++i) {if(vec[i]>0) {ans = i+1;break;}}cout<<ans<<"\n";
}

2 PAT 甲级 1145 Hashing - Average Search Time

#include<bits/stdc++.h>
using namespace std;const int N = 1e4+10;
int m_size, n, m;bool IsPrime(int n) {if(n<=3) {return n>1;}int x = sqrt(n)+0.5;for(int i=2; i<=x; ++i) {if(n%i == 0) return false;}return true;
}void AdjustToPrime(int &n){while(!IsPrime(n)) ++n;
}int table[N];
void InitHashTable(){memset(table, -1, sizeof(table));
}
void Insert(int val) {int pos = val%m_size;for(int step = 0; step <= m_size; ++step) {pos = (val + step * step)%m_size;if(table[pos]==-1){table[pos] = val;return;}}printf("%d cannot be inserted.\n", val);
}int Find(int val) {int cnt = 0;int pos = val%m_size;for(int step = 0; step <= m_size; ++step) {cnt += 1;pos = (val + step * step)%m_size;if(table[pos]==val || table[pos] == -1){break;}}return cnt;
}int main() {cin>>m_size>>n>>m;AdjustToPrime(m_size);InitHashTable();while(n--){int key;cin>>key;Insert(key);}int tot_cnt = 0;for(int i=0; i<m; ++i){int key;cin>>key;tot_cnt += Find(key);}printf("%.1f\n", tot_cnt*1.0/m);
}

3 PAT 甲级 1146 Topological Order

#include<bits/stdc++.h>
using namespace std;const int N = 1010;
set<int> to[N];
int in_degree[N];int n, m;bool JudgeHelper(vector<int> &seq, int begin) {if(begin == seq.size()) return true;int now = seq[begin];if(in_degree[now]!=0) return false;for(auto next: to[now]) {in_degree[next]--;}bool ans = JudgeHelper(seq, begin+1);for(auto next: to[now]) {in_degree[next]++;}return ans;
}bool Judge(vector<int> &seq) {return JudgeHelper(seq, 0);
}int main() {cin>>n>>m;for(int i=0; i<m; ++i) {int x, y; cin>>x>>y;to[x].insert(y);in_degree[y]++;}int k; cin>>k;vector<int> ans;for(int i=0; i<k; ++i) {vector<int> seq(n);for(int i=0; i<n; ++i) cin>>seq[i];if(!Judge(seq)){ans.push_back(i);}}for(int i=0; i<ans.size(); ++i){if(i!=0) cout<<" ";cout<<ans[i];}
}

4 PAT 甲级 1147 Heaps

#include<bits/stdc++.h>
using namespace std;const int N = 1010;
int m, n;
int tree[N];int lchild(int pos) {int child = 2*pos + 1;return child>=n ? -1: child;
}int rchild(int pos) {int child = 2*pos + 2;return child>=n ? -1: child;
}void PostOrder(int idx, vector<int>& vec) {if(idx == -1) return;PostOrder(lchild(idx), vec);PostOrder(rchild(idx), vec);vec.push_back(tree[idx]);
}bool IsMaxHeap(int idx) {if(lchild(idx) == -1) return true;if(rchild(idx) == -1) {return tree[idx]>=tree[lchild(idx)] && IsMaxHeap(lchild(idx));}return tree[idx]>=tree[lchild(idx)] &&tree[idx]>=tree[rchild(idx)] &&IsMaxHeap(lchild(idx)) &&IsMaxHeap(rchild(idx));
}bool IsMinHeap(int idx) {if(lchild(idx) == -1) return true;if(rchild(idx) == -1) {return tree[idx]<=tree[lchild(idx)] && IsMinHeap(lchild(idx));}return tree[idx]<=tree[lchild(idx)] &&tree[idx]<=tree[rchild(idx)] &&IsMinHeap(lchild(idx)) &&IsMinHeap(rchild(idx));
}int main() {cin>>m>>n;for(int i=0; i<m; ++i){for(int j=0; j<n; ++j) {cin>>tree[j];}if(IsMaxHeap(0)) printf("Max Heap\n");else if(IsMinHeap(0)) printf("Min Heap\n");else printf("Not Heap\n");vector<int> path;PostOrder(0, path);for(int i=0; i<path.size(); ++i) {if(i!=0) printf(" ");printf("%d", path[i]);}printf("\n");}
}

这篇关于PAT 2018年浙大复试机试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075522

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

机试算法模拟题 服务中心选址

题目描述 一个快递公司希望在一条街道建立新的服务中心。公司统计了该街道中所有区域在地图上的位置,并希望能够以此为依据为新的服务中心选址:使服务中心到所有区域的距离的总和最小。 给你一个数组positions,其中positions[i] = [left, right] 表示第 i 个区域在街道上的位置,其中left代表区域的左侧的起点,right代表区域的右侧终点,假设服务中心的位置为loca

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构

【中等】保研/考研408机试-二分查找(模板题)

二分查找就是在一个有序数组中查找某个值,以首端尾端的中点mid查找对比,mid与要查找的数进行对比,看落在哪个区间,在那个区间重新得到首端和尾端,进而得到新的mid值。 一、模板题 二分查找-I_牛客题霸_牛客网 class Solution {public:int search(vector<int>& nums, int target) {int left=0,right=nums.s

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

【最新华为OD机试E卷-支持在线评测】机器人活动区域(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 94 分 最新华为OD机试目录: https://blog.