- 博客(53)
- 收藏
- 关注
原创 fread feof 文件尾读取重复的问题
问题: 多路归并排序时,每次通过fread读取小文件里的一个double数据,通过feof判断是否读取结束, 结果,在最后总的排序文件中,每个小文件的最后一行的数据回重复一遍原因: feof只是检查标志位,如果是good则返回0,是bad就返回1。 更改标志位的fread函数,只有当它读不到东西了,才会把标志位从good变成bad,当fread读到最后一个字符时,由
2016-12-25 21:23:08
7571
转载 计算程序的运行时间
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include #include #include #include #include #include using namespace std;
2016-09-09 19:54:43
396
原创 第五章 二叉树 练习题(数据结构与算法MOOC)
题目倒着思考,注意超时处理代码:#include#includeusing namespace std;int main(){ int t,cas=0; cin >> t; while (t--) { cas++; long long a, b; int l, r; cin >> a >> b; l = 0; r = 0; while (a
2016-09-07 11:19:51
1911
原创 699 - The Falling Leaves
原题思路:先序历遍建树从最左的一个结点p开始,输出第一堆当p不是根节点的时候:p=p->parent cnt =p->e + p->left->right->e +p->right->left->e;当p是根节点当p->right!=NULLp=p->rightcnt =p->e + p->left->right->e +p->rig
2016-09-06 10:09:32
266
原创 1529ShippingBoat
题目:Shipping Routes代码:(AC)#include#include#include#includeusing namespace std;int m, n, p, d[35][35];map_map;void Floyd(){ for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i
2016-09-04 17:36:09
264
原创 1836:Alignment
题目Alignment大意:n个军人按他们的序号排成一列现在挑出一些人,剩下的军人相对位置不变。则剩下队列中的军人至少可以看到这个队的某一端(当从军人的位置到端点的位置,不存在比他高或者与其身高相等的人时,军人可以看到这一端)问:至少挑多少人,输出被挑出人的总数分析:从挑人这个角度不好思考反过来看剩余队伍中的人,其实就是 最长有序子序列有序可以是
2016-09-04 10:38:05
292
原创 25幻方
原题幻方代码(AC)#include#include#includeusing namespace std;int main(){ int N; cin >> N; if (N > 0) { int num, a[40][40],remain; int lastR, lastC, currC, currR; memset(a, 0, sizeof(a))
2016-09-03 10:05:11
458
原创 STL中的链表
详细讲解可参考博主原来 1.头文件2.如何创建链表 list l3.如何历遍链表&&迭代器 迭代器的定义 list::iterator it;for(it = l.begin();it!=l.end();++it) cout4.如何在链表中插入元素 l.pushback(ele) 在末尾插入ele l.
2016-09-03 08:56:24
1186
原创 08:病人排队
原题:病人排队建立链表思路,从左到右历遍,如果年龄小于60,位置不变。 年龄大于60. 从链表的第一个点开始,如果比第一个大,插到头部。依次往后判断
2016-09-03 08:50:12
1500
原创 25 最长最短单词
原题 最长最短单词类似题目:317最长单词思路都是用gets读入一个句子,然后历遍每个单词判断代码如下:(AC)#include#include#includeusing namespace std;int main(){ char s[20210],word[205][105]; int minRow, maxRow,minlen,maxlen, i ,j
2016-09-02 21:13:38
4460
1
原创 3179: 最长单词
题目:3179 最长单词求一串字符中的最长单词,如果有多个,输出最后一个代码如下:#include#include#includeusing namespace std;int main(){ char str[205]; int len; while (gets(str)) { int maxLen = -1, row; char word[205][2
2016-09-02 16:23:27
523
原创 10039 Railroads
原题:10039 Railroads题目大意:Jill要乘火车去参加比赛。为了避免迟到,她要选择能最早到达的方案。Jill换乘时间非常快,看做0.输入:第一行场景数,每个场景由3部分组成 part1: 列举所有被铁路连接的城市的名称 第一行是城市数 1 part2:描述当天所有会运行的
2016-09-02 09:11:00
632
转载 printf 格式化输出符号详细说明
转载出处:freemantse%a 浮点数、十六进制数字和p-记数法(C99)%A 浮点数、十六进制数字和p-记法(C99)%c 一个字符(char)%C 一个ISO宽字符%d 有符号十进制整数(int)(%ld、%Ld:长整型数据(long),%hd:输出短整形。) %e 浮点数、e-记
2016-09-02 08:46:56
2239
原创 10278 FireStation
原题:消防站大意:一个城市看做很多结点和路组成 每个结点都有人居住 每个结点可能没有消防站、或者有1或多个消防站 现在有居民抱怨离最近的消防站的距离都太远了 所以决定新建一些消防站给你新建的消防站的数目让你分析在哪些位置去建立消防站,时居民到最近消防站的最大距离最小思路:这题
2016-09-01 16:44:19
410
原创 10099 - The Tourist Guide
题目大意:找出从起点到终点路径最小边的最大值这题有一个陷阱,假设最大值为max,则每次运输的人数只能为max-1,因为每次导游要包含在运输人数里思路:贪心+最大生成树kruskal算法每次找最大的一条边,如果这条边连接了两棵不同的树,则合并这两棵树,直到起点与终点联通,则当前边的值即为最小边的最大值kruskal算法代码如下:(AC)#inclu
2016-08-30 21:35:03
397
原创 10034 Freckles
题目大意:给你n个点的坐标,任意两个点都可以相连让你找出最小生成树的总边长思路:最小生成树问题 prim or kruskal代码:prim算法(AC)#include#include#include#include#include#includeusing namespace std;struct vertex {
2016-08-30 16:41:18
245
原创 STL容器之优先队列
参考:拼装小火车要学会如何定义最小优先队列、最大优先队列对于自己定义的结构体,如何定义最小、最大优先队列核心://定义比较结构struct cmp1{ bool operator ()(int &a,int &b){ return a>b;//最小值优先 }};struct cmp2{ bool operator ()(i
2016-08-30 14:51:15
229
原创 c&c++ error
8.30今天写程序的时候产生了一个这样的错误error:no type named iterator_category in struct错误代码类似下面:#include #include #include using namespace std; struct vertex{ int x, y;}Point;double distance(cons
2016-08-30 14:44:15
435
原创 576-Risk
题目大意:一个棋盘类的战争游戏。棋盘上有很多国家,求从一个国家到另一个国家的最短距离输入:1-19行,第i行的第一个数x表示有x个国家与国家i相邻,后面的x个数表示的是与i相邻的国家 要注意如果ij相邻则ji也是相邻的 本质是一个无向图 输出:对于每个给定的起点和终点,输出最短路径思路:有权无向图(无负权)求
2016-08-30 10:39:59
337
原创 排序算法
关键词:插入冒泡选择、希尔归并快排、堆排序倒着讲1.堆排序1.1有关堆与优先队列,看这里堆与优先队列1.2堆排序的思想: 最大堆,每次把根从堆中取出来删去,然后从新建堆,并把取出来的元素放到数组的最后 那么最大的元素被放到n-1的位置,第二大的元素被放到n-2的位置。。。直到最后,数组就变成的由小到大的顺序 1.3算法复杂度 最好最差平均
2016-08-27 11:00:54
441
原创 堆与优先队列
1.针对的问题:很快的找出最大的元素(最大堆)、很快的找出最小的元素(最小堆) 它不适用于从一堆数中检索某一个数 如何去定义一个堆?抓住两点: 完全二叉树、任何一个内部结点的值大于等于其子节点的值 一个堆一定是完全二叉树的形式:节约空间、可以很方便的用数组表示 最大堆:根大于等于任何一个子节点(堆
2016-08-27 10:06:55
402
原创 判断图中是否存在环
参考博客:xwdreamer的专栏1.对于无向图,有以下三种方法剪枝、无环连通分支边数m1.1剪枝1删除所有度数为0的点2把所有度数为1的点入队3.从队列中取出一个点,删除这个点,并且所有与这个点相关联的点的度数都减14.重复步骤2、3直到队列为空如果还有为被删除的点,说明存在环1.2无环连通分支边数m通过BFS,DFS可以得到图的连
2016-08-26 17:11:08
2497
原创 单源最短路径算法
1.单源最短路径以及Dijsktra算法2.多源最短路径以及Floyd算法1.1单源最短路径:即从一个特定的点出发,寻找这个点到其他点的最短路径对于一个无权图,BFS算法就可以了。但是对于加权图,BFS行不通1.2 Dijkstra(迪杰斯特拉):针对加权有向图、单源最短路径dijkstra通过一个简单的动态规划思想来求最短路径。(假设求从点s出的的单源
2016-08-26 15:40:24
3373
原创 最小生成树
1.MST(Minimum spanning tree)A minimum spanning tree is a spanning tree of a connected,undirected graph.It connects all the verticals together with the minimum total weighting for it's edges.最小生
2016-08-26 14:08:26
391
原创 108 - Maximum Sum
原题地址108-MaximunSum大意:求矩阵最大连续和。是对一维序列最大连续和问题的扩展,具体参考思路:将二维转化为一维,枚举所有行的情况代码如下:结果:AC#include#include#includeusing namespace std;int n;int a[105][105];int sum[105][105];int main(){
2016-08-22 20:06:02
256
原创 qsort的使用
原地址CPlusPlusfunctionqsortvoid qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));Sort elements of arraySorts the num elem
2016-08-21 15:42:17
277
原创 简单图+Havel_Hakimi定理
1.什么是简单图:没有平行边和自环什么是平行边?对于无向图,如果两个点之间有一条以上的边,则这些边是平行边; 对于有向图,如果一个点指向另一个点的边多于一条,则这些边是平行边什么是自环?边的两个端点是同一个点2.度序列一个由图的各个点的度数组成的序列3.Havel_Hakimi定理:用于判断一个度序列能否转换成一个简单图流程:度序列按
2016-08-21 15:24:38
1081
原创 10720 - Graph Construction
题意:给你一个度数序列,让你判定该序列能否表示一个图思路:Havel_Hakimi定理参考:http://blog.youkuaiyun.com/shuangde800/article/details/7857246代码:#includeusing namespace std;int n;int arr[10000];int cmp(c
2016-08-21 15:08:03
503
原创 101 - The Blocks Problem
题目大意:给你n个数字0~n-1初始,数字i在位置i上有如下四种操作:move a onto b:把a、b上面的所有数字移动回原来的位置,再把a移动到b上move a over b: 把a上的数字移动回数字原来的位置,再把a移动到含有b的堆的上方pile a onto b: 把b上的数字移动回原来的位置,把含有a的堆移动到b上(a原本上面的数字顺序不变)p
2016-08-19 06:39:38
228
原创 碎碎念_天天更
8.181.有一个变量作为while循环的条件时,如while(size>0),那么这个变量的更新应该在循环体的最后。 如果更新完size后,循环体还有语句没有执行,则应该先判断一下此时是否已经到达循环结束的调节,如果是,用break结束循环。 for同理。 最好不要再循环体的中间变更条件变量,如果变更了一定要及时检查。2.if语句,循环语句都是比较耗费时间的
2016-08-18 09:07:27
414
原创 133 - The Dole Queued
原题大意:编号1-N的N个人由1开始逆时针站成一个环。从第一个人开始逆时针数K个人;再从第N个人开始顺时针数M个人,第K、M出队。如果KM是同一个人,只出队一次。从K逆时针下一个人、N顺时针下一个人开始,重复上述步骤。直到队列为空。思路:关键字:数据结构两种实现方式:双向链表 环形数组
2016-08-18 07:00:04
233
原创 657 - The die is cast
这题就是递归套用递归先递归搜索骰子,如果在骰子里面发现了点,在对该点递归,同时更新点数。代码如下:#include#include using namespace std;char pic[60][200];int visit[60][200];int cnt[100];int col, row;//对骰子上的点递归void dfs_dot(int x, i
2016-08-17 14:38:56
216
原创 784 - Maze Exploration
思路:从*所在的位置出发,dfs历遍所有与它联通的点并将其变为#dfs实现关键思路在于两点:1.哪些点是与当前点联通的2.dfs返回条件代码如下:#includeusing namespace std;char maze[35][90];int visit[35][90];int r;//the row of mazevoid DFS(int ro
2016-08-17 13:29:36
241
原创 572 - Oil Deposits
一道基础的图的历遍的题。思路是由一个v[][]标记当前位置是否被visit过,g[][]存储当前是否为pocket每次DFS历遍一块deposit主程序扫描g[][],没发现一块没有被visit过的pocket,就调用DFS以它为起点历遍它代码如下:#includeusing namespace std;char g[110][110];int vis[
2016-08-17 11:01:53
224
原创 10562 - Undraw the Trees
参考博客:http://blog.youkuaiyun.com/goomaple/article/details/7818170自己的代码实现:#includeusing namespace std;char Tree[210][210];void DFS(int r, int c) { cout << Tree[r][c]; //输出前导左括号 cout << "(
2016-08-17 08:00:58
218
原创 112 - Tree Summing
BackgroundLISP was one of the earliest high-level programming languages and, with FORTRAN, is one of the oldest languages currently being used. Lists, which are the fundamental data structures in LI
2016-08-16 09:27:45
336
原创 二叉树
本文包含以下内容:一.二叉树的一些基本概念二.两条定理三.二叉树的层次历遍四.二叉树的数组实现和链表实现五.二叉检索树六.总结一.二叉树的基本概念二叉树:一个点的集合,这个集合要么为空,要么包含一个根节点和两个子二叉树祖先和子孙:如果一条路径从结点R至M,那么R是M的祖先,M是R的子孙深度、高度、层数:R至M路径长度为L,则至M的深度为L,高度为L+
2016-08-15 18:22:02
966
原创 vs2015
1.变量名一改全改选着你要修改的变量名,按下ctr+f,图下图所示(此处我选的是top)2.在下面的方框里填下你想更改的名称(我填写的是length)b->c表示改一个, ab->ac表示全部都更改点击ab->ac即可
2016-08-15 10:23:26
272
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人