PAT(A)
M_cry
这个作者很懒,什么都没留下…
展开
-
多项式求导
#include<stdio.h> #include<stdlib.h>typedef struct PolyNode *Polynomial; struct PolyNode{ int coef; int expon; Polynomial link; };void Attach(int c,int e,Polynomial *pRear) { Polynomial原创 2015-10-23 19:43:12 · 751 阅读 · 0 评论 -
06-图3 六度空间 (30分)
BFS key:记录BFS的层数,在BFS层数为6的时候计算count/Nv ac代码#include<stdio.h> #include<iostream> #include<queue>using namespace std;int G[10005][10005]; bool Visited[10005]; int Nv,Ne;void CreateGraph() { scanf("原创 2016-04-26 09:54:56 · 1025 阅读 · 0 评论 -
07-图4 哈利波特的考试
哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变原创 2015-12-08 15:01:43 · 652 阅读 · 0 评论 -
04-1 还原二叉树
给定一棵二叉树的先序遍历序列和中序遍历序列,要求二叉树的高度。我们知道先序遍历的第一个结点必然是跟结点,可以在中序遍历中找到这个根结点的位置,于是就知道在中序遍历中,根结点左边的所有结点一定属于左子树,右边的所有结点一定属于右子树求二叉树的高度。如果我们已经知道左,右子树的高度,那么树的高度就是左右子树的高度中大的加1.所以我们就可以通过递归来实现。#include<stdio.h> #includ原创 2015-10-24 01:28:01 · 580 阅读 · 0 评论 -
03-树3 Tree Traversals Again
根据题目: 入栈的顺序即为先序遍历的顺序 出栈的顺序即为中序遍历的顺序 然后根据先序遍历、中序遍历来构建二叉树AC代码#include<iostream> #include<stdlib.h> #include<stdio.h> #include<string> #include<stack>using namespace std;typedef struct TreeNode *BinTre原创 2016-04-26 16:39:02 · 420 阅读 · 0 评论 -
03-树2 List Leaves (25分)
在网上看到别人的代码,真心觉得写的很好#include<stdio.h> #include<ctype.h>struct Node{ int root; int left; int right; };int main(){ //create the tree int n; struct Node nodes[10]; scanf("%d",&n原创 2016-04-13 22:13:38 · 1130 阅读 · 0 评论 -
04-树6 Complete Binary Search Tree
用数组ac代码#include<cstdio> #include<cstdlib>const int maxx = 1005; int node[maxx]; int tree[maxx]; int pos = 0,n;int cmp(const void *a,const void *b){ int *pa = (int *)a; int *pb = (int *)b; r原创 2016-04-28 15:47:17 · 471 阅读 · 0 评论 -
05-树8 File Transfer (25分)
并查集#include<bits/stdc++.h> using namespace std; const int maxn = 1000; int father[maxn];int findroot(int x){ if(x != father[x]){ father[x] = findroot(father[x]); } return father[x];原创 2016-04-28 15:48:48 · 901 阅读 · 0 评论 -
05-树7 堆中的路径 (25分)
ac代码#include<stdio.h>#define MaxN 1001 #define MinH -10001int H[MaxN],size;void Create() { size = 0; H[0] = MinH; }void Insert(int X) { int i; for(i=++size;H[i/2]>X;i/=2) H[i] =原创 2016-04-28 15:50:17 · 568 阅读 · 0 评论 -
07-图6 旅游规划 (25分)
单源最短路算法#include<bits/stdc++.h> #define inf 260000 using namespace std; struct node{ int dist; int cost; };node Map[505][505]; int dist[505],cost[505],n,m,s,d;int main() { scanf("%d %d %d %原创 2016-04-28 17:37:57 · 1040 阅读 · 0 评论 -
06-图2 Saving James Bond - Easy Version
#include<iostream> #include<vector> #include<cmath> using namespace std;#define MinLen 42.5 struct Point{ int x; int y; bool visited; }; Point O;int N,D; vector<Point> s;double Distance(Poi原创 2016-04-25 23:00:29 · 336 阅读 · 0 评论 -
06-图1 列出连通集 (25分)
BFS中非STL实现#include<cstdio>#define N 15int G[N][N],Nv,Ne; bool Visited[N];void InitVisit() { for(int i=0;i<N;i++) Visited[i] = false; }void DFS(int V) { Visited[V] = true; printf("%d原创 2016-04-25 22:58:51 · 490 阅读 · 0 评论 -
Pat 1002
多项式加法~数组实现 直接贴代码了#include<stdio.h>typedef struct ploynode{ int expon; double coef; }poly;int main() { int k1,k2; poly a[12],b[12],c[30]; int i,j,pos=0; scanf("%d",&k1); for(原创 2016-04-11 22:10:13 · 397 阅读 · 0 评论 -
01-复杂度1 最大子列和问题 (20分)
根据求最大子列和的在线处理算法即可。#include<stdio.h>int main() { int n; int array[100005]; int ThisSum=0,MaxSum=0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&array[i]); }原创 2015-10-23 19:57:48 · 630 阅读 · 0 评论 -
03-树1 树的同构 (25分)
03-树1 树的同构 (25分) 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。 现给定两棵树,请你判断它们是否是同构的。 输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),原创 2015-10-25 19:21:05 · 2062 阅读 · 0 评论 -
01-复杂度2 Maximum Subsequence Sum (25分)
题目链接对最大子列和的算法进行简单的判断即可#include<stdio.h>int main() { int n; int array[100005]; int ThisSum=0,MaxSum=0; int begin=0,end=0; int left; bool allNeg = true; scanf("%d",&n); for原创 2015-10-23 22:28:56 · 471 阅读 · 0 评论 -
04_树4_判断是否为同一二叉搜索树
1.建立两棵搜索树的判别方法 2.不建树的判别方法 3.建立一棵树,再判断其他序列是否与该树一致步骤 1.搜索树的表示 2.建立搜索树 3.判断一序列是否与搜索序列一致#include<stdio.h> #include<stdlib.h>typedef struct TreeNode *Tree; struct TreeNode{ int v; Tree Left,Rig原创 2015-11-14 22:00:07 · 339 阅读 · 0 评论 -
04-树5- Root of AVL Tree
An AVL tree is a self-balancing binary search tree,In an AVL tree,the heights of the two child subtrees of any node differ by at most one;If at any time they differ by more than one,rebalancing is done原创 2015-11-16 22:15:33 · 356 阅读 · 0 评论 -
06-图1-列出连通集
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入样例: 8 6 0 7 0 1 2 0 4 1 2 4 3 5输出样例: { 0 1 4 2 7 } { 3 5 } { 6 } { 0 1 2 7 4 } { 3 5 } { 6 }解题思路:原创 2015-11-20 23:13:58 · 445 阅读 · 0 评论 -
PAT 1045 快速排序
快速排序 题目链接先用快速排序对数组进行排序,对原数组进行遍历 如果满足该数满足他是遍历过程中最大的,而且该数和排好序的数组中对应的元素相等就说名他是主元int comp(const void *a,const void *b) { return *(int *)a - *(int *)b; } qsort(arr_s,N,sizeof(int),comp)原创 2015-12-10 22:33:06 · 495 阅读 · 0 评论 -
1049 数据片段和
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这10个片段。给定正整数数列,求出全部片段包含的所有的数原创 2015-12-08 15:10:01 · 563 阅读 · 0 评论 -
pat 1009
多项式乘法: 用一个数组储存相乘后的到的元素 使用double型的数组,下标表示指数,対应的值表示系数。#include<stdio.h> #include<math.h>typedef struct{ int expon; double coef; }poly;poly a[15],b[15]; double ans[2008]; int k1,k2,cnt=0;void In原创 2016-04-12 09:12:36 · 349 阅读 · 0 评论 -
PAT 1074 Reversing Linked List
题目链接AC代码#include<stdio.h> #include<iostream> #include<algorithm> using namespace std;int list[100010]; int node[100010][2];int main() { // freopen("F:\\in1.txt","r",stdin); int str,num,r; scan原创 2016-04-24 11:08:07 · 325 阅读 · 0 评论