自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Forever_MZY

Computer Science

  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据结构--线索二叉树

#include <stdio.h>#include <stdlib.h>typedef struct binary_tree{ char data; struct binary_tree * lc, * rc; int ltag, rtag;}bit;bit * pre;void creat(bit * & );void headnode(bit * & , bit

2017-01-22 11:52:37 324

原创 数据结构--二叉树

#include <stdio.h>#include <stdlib.h>typedef struct tree{ char data; struct tree * lc, * rc;}bit;void creat(bit * & );void inorder(bit * );//先序遍历int depth(bit * );int count(bit * );int ma

2017-01-21 21:49:16 221

原创 数据结构--链队

#include <stdio.h>#include <stdlib.h>typedef struct queue{ int data; struct queue * next;}q;q * front;q * rear; void init(void);void push(int );void pop(void);int frontdata(void);int mai

2017-01-21 15:48:26 356

原创 数据结构--链栈

#include <stdio.h>#include <stdlib.h>int size;typedef struct node{ int data; struct node * next;}Node;Node * top;void init(void);void push(int k);void pop(void);int topdata(void);int main

2017-01-21 15:23:31 353

原创 数据结构--顺序栈

#include <stdio.h>#define SIZE 105int stack[SIZE];struct stack{ int top, base; int size;}s;void init(void);void push(int );void pop(void);int top(void);void clear(void);int main(void){

2017-01-21 10:47:11 213

原创 数据结构--双向链表

#include <stdio.h>#include <stdlib.h>int n;typedef struct node { int num; int data; struct node * next, * pre;}node;node * init(void);void display(node * );void dis(node *);void inser

2017-01-20 18:58:09 214

原创 数据结构--循环链表

#include <stdio.h>#include <stdlib.h>int n;typedef struct node { int num; int data; struct node * next;}node;node * init(void);void dis(node * );void display(node * );int main(void){

2017-01-20 17:54:25 197

原创 数据结构--单链表

#include <stdio.h>#include <stdlib.h>typedef struct node{ int num; int data; struct node * next;}node;node * init(int );//创建链表 void display(node *);//遍历链表 void dis(node *);//释放链表 void

2017-01-20 16:34:58 261

原创 POJ 2367 Genealogical tree

2016.12.31【题目描述】 The system of Martians’ blood relations is confusing enough. Actually, Martians bud when they want and where they want. They gather together in different groups, so that a Martian can

2016-12-31 20:59:07 235

原创 拓扑排序

一个较大的工程往往被划分成许多子工程,我们把这些子工程称作活动(activity)。在整个工程中,有些子工程(活动)必须在其它有关子工程完成之后才能开始,也就是说,一个子工程的开始是以它的所有前序子工程的结束为先决条件的,但有些子工程没有先决条件,可以安排在任何时间开始。为了形象地反映出整个工程中各个子工程(活动)之间的先后关系,可用一个有向图来表示,图中的顶点代表活动(子工程),图中的有向边代表活

2016-12-31 20:56:19 194

原创 POJ 1041 John's trip

2016.12.31【题目描述】 Little Johnny has got a new car. He decided to drive around the town to visit his friends. Johnny wanted to visit all his friends, but there was many of them. In each street he had on

2016-12-31 16:27:27 293

原创 POJ 2230 Watchcow

2016.12.31【题目描述】 Bessie’s been appointed the new watch-cow for the farm. Every night, it’s her job to walk across the farm and make sure that no evildoers are doing any evil. She begins at the barn, m

2016-12-31 15:13:08 307

原创 欧拉路径

欧拉路径:穿程于图G的每条边仅一次的路径 欧拉回路:穿程于图G的每条边一次且仅一次的回路 欧拉图:具有欧拉回路的图无向连通图G具有一条欧拉路径当且仅当G具有零个或两个奇点 无向连通图是欧拉图当且仅当该图的都是偶点有向连通图具有欧拉路径,当且仅当每个顶点的出度等于入度,或一个顶点的入度比出度大1,另一个顶点的入度比出度小1 有向连通图具有欧拉回路,当且仅当每个顶点的出度等于入度

2016-12-31 11:36:44 444

原创 POJ 2349 Arctic Network

2016.12.30【题目简述】 The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the

2016-12-30 20:17:41 239

原创 最小生成树--kruskal算法

2016.12.30算法思想: 先将边按照权值排序,从权值最小的边开始枚举,如果当前边连接的两个点不属于同一集合,就将这两个点连起来(用到的数据结构是并查集) 一直到枚举完所有的边,此时生成的就是最小生成树#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>using nam

2016-12-30 15:01:06 201

原创 POJ 3026 Borg Maze

2016.12.29【题目描述】 The Borg is an immensely powerful race of enhanced humanoids from the delta quadrant of the galaxy. The Borg collective is the term used to describe the group consciousness of the Bor

2016-12-29 23:35:10 256

原创 插入排序

算法思想: 默认前面的序列有序,将当前元素插入到合适的位置#include <stdio.h>void insertion_sort(int [], int );void swap(int & ,int & );int main(void){ int i, n; int a[10005]; scanf("%d", &n); for (i = 1; i <= n

2016-12-29 22:01:48 240

原创 POJ 1789 Truck History

2016.12.28【题目描述】 Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for vegetable delivery, other for furniture, or for bricks. The company has its own code describing

2016-12-28 19:56:47 236

原创 最小生成树--prim算法(poj 2485)

2016.12.28prim算法是求解最小生成树的一种算法,基本思路是贪心。从已知集合出发(初始已知集合是1个点),每次查找所能到达的点的最短路径,将与这条路径连接的点加入已知集合,同时更新所能到达的点的最短路径。【题目简述】 The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public

2016-12-28 19:11:09 237

原创 希尔排序

希尔排序,又称缩小增量排序,是直接插入排序的一种改进版本。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高

2016-12-28 16:56:41 173

原创 NOJ 1018 选太子

2016.12.27【问题描述】 描述 某皇帝有2m个儿子,现在要从中选出一个做太子,皇帝不知道该把那一个皇子立为太子,于是决定用下面的方法来选出太子,设每个太子的编号分别1、2、3、…、2m,按顺时针方向站成一个圆圈,现在从1号太子开始按顺时针方向数,数到第n个人,把他淘汰出局,然后从他的下一个人开始上述过程,当第m个人被淘汰时,转变方向继续从1开始数,重复上述过程,最后剩下的皇子将被立为太子

2016-12-27 09:50:14 472

原创 NOJ 1033 约瑟夫问题

2016.12.27【问题描述】 描述 设有N名同学手拉手围成一圈,自1、2、3、……开始编号,现从1号开始连续数数,每数到M将此同学从圈中拉走, 求最后被拉走的同学的编号输入 两个正整数,分别为N和M,0 < N <= 100, 0 < M < 65535 输出 一个正整数,为最后被拉走的同学的编号,最后输出回车输入样例 5 3 输出样例 4【解题思路】 链表实现【代码实现】#

2016-12-27 09:48:24 340

原创 POJ 1061 青蛙的约会

2016.11.15【题目描述】 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同

2016-11-15 15:49:18 242

原创 不定方程

对于不定整数方程pa+qb=c,若 c mod gcd(p, q) = 0,则该方程存在整数解,否则不存在整数解。 上面已经列出找一个整数解的方法,在找到p*a + q*b = gcd(p, q)的一组解p0,q0后,将p*a + q*b = gcd(p, q)的每个解乘上 c/gcd(p, q) 即可。 p*a + q*b = c的其他整数解满足: p = p1 + b/gcd(a, b

2016-11-15 15:22:18 644

原创 线性同余方程

对于形如ax ≡ b (mod m) 的线性同余方程,我们可以利用乘法逆元来解决。设ā是a模m的逆元,在方程两边同乘ā,我们得到 āax ≡ bā (mod m) x ≡ bā (mod m)int main(void){ int a, b, c; int in; scanf("%d%d%d", &a, &b, &c); in = inverse(a, c);

2016-11-15 15:20:18 422

原创 乘法逆元

定理:如果a和m互质,并且m > 1,那么a模m的逆元存在。且逆元在模m的完全剩余系中唯一。证明:根据贝祖定理,gcd (a, m) = 1, 存在正数 s 和 t 满足等式 sa+tm = 1,那么sa+tm ≡ 1 (mod m), 又因为 tm ≡ 0 (mod m),我们利用扩展欧几里德定理,容易找出逆元的存在void exgcd(int a,int b,int &x,int &y){

2016-11-15 15:17:59 382

原创 扩展欧几里得定理

根据贝祖定理:如果a、b是正整数,那么存在两个整数s、t使等式gcd(a,b) = sa + tb成立。我们可以用扩展欧几里得定理来找到一组s和t。如果我们找到了一组s和t使得x*a + y*b = gcd(a, b), 那么这组s和t与下一组x1*b + y1*(a % b) = gcd(a, b),这两组值有什么关系么?我们知道: a % b = a - (a/b)*b(这里的 “/” 指的是整

2016-11-15 15:14:32 486

原创 NOJ 1043 跳马

2016.11.11【题目描述】 1043.跳马时限:1000ms 内存限制:10000K 总时限:3000ms描述 现有一200*200大小的国际象棋棋盘,棋盘中仅有一个马,给定马的当前位置(S)和目标位置(T),求出马最少需要多少跳才能从当前位置到达目标位置。输入 本题包含多个测例。输入数据的第一行有一个整数N(1<=N<=1000),表示测例的个数,接下来的每一行有四个以空格分隔的整数

2016-11-11 23:25:07 744 1

原创 回溯算法总结

2016.11.5【算法框架】void search(int k) { if (满足条件) 输出解 else { 枚举解的每一种可能性 处理数据 搜索下一层 恢复状态 } }【算法核心】 深度优先遍历,一直向下搜索 递归地调用函数

2016-11-05 22:06:43 205

原创 C++ STL中queue的使用

queue模版需要定义两个模版参数,一个是元素类型,一个是容器类型,元素类型是必要的,容器类型是可选的,默认为dqueue类型。定义queue对象的示例代码如下: queueq1; queueq2;queue的基本操作有: 1.入队:如q.push(x):将x元素接到队列的末端; 2.出队:如q.pop() 弹出队列的第一个元素,并不会返回元素的值; 3,访问队首元素:如q.front()

2016-11-05 13:08:47 288

原创 NOJ 1042 电子老鼠闯迷宫

2016.11.3【题目描述】 1042.电子老鼠闯迷宫时限:1000ms 内存限制:10000K 总时限:3000ms描述 有一只电子老鼠被困在如下图所示的迷宫中。这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路。电子老鼠可以在路上向上、下、左、右行走,每一步走一个格子。现给定一个起点S和一个终点T,求出电子老鼠最少要几步从起点走到终点。输入 本题包含一个测例。在测例的

2016-11-05 12:58:35 972

原创 NOJ 1541 加1乘2平方

2016.11.3【题目描述】 1541.加1乘2平方时限:1000ms 内存限制:10000K 总时限:3000ms描述 给定两个正整数m、n,问只能做加1、乘2和平方这三种变化,从m变化到n最少需要几次输入 输入两个10000以内的正整数m和n,且m小于n 输出 输出从m变化到n的最少次数输入样例 1 16 输出样例 3【解题思路】 BFS,从当前节点扩展状态加入队列中,直到

2016-11-05 12:54:15 661

原创 二分插入排序

2016.10.30【算法思想】 核心是插入排序,找合适的位置的时候使用了二分算法【代码实现】# include <stdio.h>int n = 5;int a[10005];void binary_insertion_sort(void);int binary_search(int , int );int main(void){ int i; scanf("%d", &n)

2016-10-30 22:15:04 273

原创 选择排序

2016.10.29【算法思想】 选择排序算法很简单,每次找到当前无序序列中最大的一项,安排到有序序列的最后。【算法分析】 时间复杂度O(n2),是不稳定排序【代码实现】# include <stdio.h>int n;int a[10005];void selection_sort(void);void swap(int ,int );int main(void){ int i;

2016-10-29 18:10:06 205

原创 NOJ 1036 数字排序

2016.10.28【题目描述】 1036.数字排序时限:1000ms 内存限制:10000K 总时限:3000ms描述 给你N个数字,请用冒泡法对这N个数字进行降序排序,并输出结果输入 第一行为N,N<=20 ; 第二行为N个数字,这N个数字用一个空格隔开 所有数均可用int型表示 输出 把这些数字用降序输出,每行输出一个,最后输出一个回车输入样例 8 23 12 36 98

2016-10-28 20:46:58 638

原创 NOJ 1001 二分查找

2016.10.28【题目描述】 1001.二分查找时限:1000ms 内存限制:10000K 总时限:3000ms描述 给定一个单调递增的整数序列,问某个整数是否在序列中。输入 第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。 输出 每个查询的输出占一行,如果k在序列中

2016-10-28 20:42:37 795

原创 NOJ 1007 8皇后问题

2016.10.19【题目描述】 8皇后问题时限:1000ms 内存限制:10000K 总时限:3000ms描述: 输出8皇后问题所有结果。输出: 每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。【解题思路】 8皇后是

2016-10-23 21:33:55 1080

原创 NOJ 1453 筛法

2016.10.10【题目描述】 1453.筛法(Sieve Method)时限:1000ms 内存限制:10000K 总时限:3000ms描述 用筛法求[a,b]中的素数。输入 2个正整数:a b。 a、b均在1000以内,且a小于等于b。 输出 [a b]区间内的所有素数,每个单独一行。输入样例 2 5输出样例 2 3 5【解题思路】 判素数,常规题。 最普通的做法就是

2016-10-23 21:19:33 286

原创 NOJ 1033 约瑟夫问题

2016.10.14【题目描述】 1033.约瑟夫问题(Joseph)时限:100ms 内存限制:10000K 总时限:1000ms描述 设有N名同学手拉手围成一圈,自1、2、3、……开始编号,现从1号开始连续数数,每数到M将此同学从圈中拉走, 求最后被拉走的同学的编号输入 两个正整数M和N 输出 一个正整数,为最后被拉走的同学的编号,最后输出回车输入样例 5 3 输出样例 4【解

2016-10-23 20:31:12 326

原创 NOJ 1214 Catalan数

2016.10.14【题目描述】 1214.Catalan数时限:100ms 内存限制:10000K 总时限:1000ms描述 令h(0)=1,h(1)=1,Catalan数满足递归式:h(n)= h(0)*h(n-1) + h(1)*h(n-2) + … + h(n-1)h(0) (其中n≥2),这是n阶递推关系。 输入 一个整数N,0≤N<20 输出 给出Catalan数列中第N个数

2016-10-23 19:06:14 275

poj 3104代码

poj 3104,思想二分,二分天数,判断单调性,

2014-07-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除