随笔分类 - 算法
摘要:HDU 2093 考试排名 /* HDU 2093 考试排名 */ #include <cstdio> #include <string> #include <queue> #include <iostream> using namespace std; struct Node{ string na
阅读全文
摘要:/* HDU 2094 产生冠军 */ /* 这到题测试数据应该有错误 参考网上的代码 说是满足总人数-失败者=1即可以 这样做也确实可以AC 但下面的数据应该是无法判断出冠军的 但用上面的思路是算可以的 因此 我也不知道怎么办才好 AC了再说 A B B c D E E F F D */ #inc
阅读全文
摘要:HDU 2091 空心三角形 /* HDU 2091 空心三角形 水题 */ #include <cstdio> int main() { int kase = 0; char ch; int h, t; //h表示高 while (scanf("%c", &ch) == 1 && ch != '@
阅读全文
摘要:HDU 2089 不要62 /* HDU 2089 不要62 水题+打表 */ #include <cstdio> #include <cstring> const int maxn = 1000005; bool a[maxn]; int main() { memset(a, 0, sizeof
阅读全文
摘要:HDU 2090 算菜价 /* HDU 2090 算菜价 水题 */ #include <cstdio> int main() { char s[105]; double a, b, sum = 0; while (scanf("%s", s)==1){ scanf("%lf%lf", &a, &b
阅读全文
摘要:HDU 2092 整数解 x+y = n, x*y = m; y = n - x; x * ( n - x) = m nx - x^2 = m; x^2 - nx + m = 0; △ = sqrt(n^2 - 4m) 要有整数解即△需要为可开方数即可。 /* HDU 2092 整数解 水题 */
阅读全文
摘要:HDU 1016 题意:输入一个数n,把1到n的自然数放到一个环里(第一个为1),保证相邻的两个数的和是素数。 思路:第一个数填1,以后每个数判断该数和前一个数想加是否为素数,是则填,然后标记,近一步递归求解。 然后记得回溯,继续判断下一个和前一个数之和为素数的数。素数需要打表 /* HDU 101
阅读全文
摘要:/* POJ 3278 Catch That Cow 简单BFS */ #include <cstdio> #include <queue> #include <cstring> using namespace std; const int maxn = 100005; bool visit[max
阅读全文
摘要:/* POJ 3984 迷宫问题 BFS */ #include <cstdio> int mapn[5][5]; int x[100], y[100], pre[100]; int front = 0;//队首 int rear = 1;//队尾指向首元素的后一位 int dx[4] = { 1,
阅读全文
摘要:题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=666
阅读全文
摘要:/* Floyd算法 */ /************************************************************************ Floyd算法的核心可用以下代码表示 for (int k = 0; k < n; ++k){ for (int i = 0
阅读全文
摘要:Bellman-Ford算法通过对边进行松弛操作来渐进地降低从源结点到其他结点的最短路径 每次循环:对所有的边进行松弛操作 循环次数:共循环n-1次(n为顶点数) 故时间复杂度: O(VE) /* Bellman-Ford算法 以边为存储结构 */ #include <cstdio> #includ
阅读全文
摘要:快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 稳定性:快速排序是不稳定的排序 时间复杂度: 最好:O(nlogn) 最差:O(n^2) 辅助空间:O(logn) ~ O(n)
阅读全文
摘要:Dijkstra算法适用于边权值为正的情况,可用于计算正权图上的单元最短路。 其伪代码如下: 设d[v0] = 0, 其他d[i] = INF 循环n次{ 在所有未标号的结点中,选取d值最小的结点x 给结点x加上永久标号 对于从x出发的所有边,执行松弛操作。 } //松弛操作的伪代码如下: RELA
阅读全文
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2553 DFS+回溯 /* HDU 2553 N皇后问题 经典回溯 */ #include <cstdio> #include <cstring> const int maxn = 15; int cn
阅读全文
摘要:题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2072 普通解法: /* HDU 2072 单词数 字符串处理 */ #include <cstdio> //C语言改成stdio.h即可 #include <cstring> //C语言改成string
阅读全文
摘要:HDU 1241 题目大意:给定一块油田,求其连通块的数目。上下左右斜对角相邻的@属于同一个连通块。 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量。 /* HDU 1241 Oil Deposits 入门DFS */ #include <cstdio>
阅读全文
摘要:直接插入排序的基本操作是将一个记录插入到已经排序好的有序表中(最开始假设第一个数为已排序),从而得到一个新的、记录数增1的有序表。 稳定性:直接插入排序是稳定排序 复杂度: 最好: O(n) 最差: O(n^2) 平均: O(n^2) 辅助空间:O(1) 下面是根据书上用L[0]存储哨兵位置而写的直
阅读全文
摘要:简单选择排序的基本思想是每一趟在n-i+1(i=1,2,3...n-1)个记录中选取关键字最小的记录作为有序序列的第i个记录 稳定性:简单选择排序是不稳定排序 时间复杂度:最好 O(n^2) 最坏 O(n^2) 平均 O(n^2) 辅助空间:O(1) 给定排序要用到的swap函数: void swa
阅读全文
摘要:冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序为止 稳定性:冒泡排序是稳定排序 时间复杂度: 最好:O(n) 最差:O(n^2) 平均:O(n^2) 辅助空间:O(1) 以下的所有代码都要用到的swap函数在此给出 /*实现swap功能*/ void
阅读全文

浙公网安备 33010602011771号