首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
啊哈专题
二分图的最大匹配——《啊哈!算法》
二分图 如果一个图的所有顶点可以被分为X和Y两个集合,并且所有边的两个顶点恰好一个属于X,另外一个属于Y,即每个集合内的顶点没有边相连,那么此图就是二分图。 二分图在任务调度、工作安排等方面有较多的应用。 判断二分图:首先将任意一个顶点着红色,然后将其相邻的顶点着蓝色,如果按照这样的着色方法可以将全部顶点着色的话,并且相邻的顶点着色不同,那么该图就是二分图。 java
阅读更多...
树(Tree)——《啊哈!算法》
树 什么是树?树是一种特殊的图,不包含回路的连通无向树。 正因为树有着“不包含回路”这个特点,所以树就被赋予了很多特性。 一棵树中的任意两个结点有且仅有唯一的一条路径连通。一棵树如果有n个结点,那么它一定恰好有n-1条边。在一棵树中加一条边将会构成一个回路。 一棵树有且只有一个根结点。 没有父结点的结点称为根结点(祖先)。没有子结点的结点称为叶结点。如果一个结点既不是根结点也不是叶
阅读更多...
图的最短路径算法——《啊哈!算法》
图的实现方式 邻接矩阵法 int[][] map;// 图的邻接矩阵存储法map = new int[5][5];map[0] = new int[] {0, 1, 2, 3, 4};map[1] = new int[] {1, 0, 2, 6, 4};map[2] = new int[] {2, 999, 0, 3, 999};map[3] = new int[] {3, 7
阅读更多...
啊哈 算法地址(仅供学习与参考)
【啊哈!算法】算法1:最快最简单的排序——桶排序 【啊哈!算法】算法2:冒泡排序 【啊哈!算法】算法3:八一八“快速排序” 【啊哈!算法】算法4:队列——解密QQ号 【啊哈!算法】算法5:解密回文——栈 【啊哈!算法】算法6:只有五行的Floyd最短路算法 【啊哈!算法】系列7:Dijkstra最短路算法 【啊哈!算法】算法8:巧妙的邻接表(数组实现) 【啊哈!算法】算
阅读更多...
第二章 啊哈!算法
一、围绕三个问题展开 问题一:二分查找 问题二: 翻手掌 问题三: 三阶段 #include <stdio.h>#include <stdlib.h>#include <string.h>#define WORDMAX 100int charcomp(char *x, char *y){ return *x - *y;
阅读更多...
《啊哈!算法》简单桶排序(Simple Bucket Sort)
《啊哈!算法》简单桶排序(Simple Bucket Sort) 首先想想如何简单地排序? 假设我们有5个学生,分数分别是5, 3, 5, 2, 8,满分10分。 由实际可知,分数范围在[0,10],闭区间范围内。 首先申请一个一维数组int arr[11], 是从[0, 10]。 这里认为第i个元素代表得i分的人的数目。 比如i=0,arr[0]=3,那么代表得0分的人有三个。 首
阅读更多...
Java玩转《啊哈算法》暴力枚举之坑爹奥数
每个笨蛋都会随时准备杀了自己,这是最怯懦,也是最简单的出路。 路 缘起代码地址枚举题1题2题2 - Plus完整代码 缘起 各位小伙伴们好呀!本人最近看了下《啊哈算法》,写的确实不错。 但稍显遗憾的是,书籍示例代码是c语言,而不是本人常用的Java。 那就弥补遗憾,说干就干,把这本书的示例语言用java写一遍, 顺带附上一些自己的理解! 今天这篇博客讲的是如何用枚举
阅读更多...
Java玩转《啊哈算法》纸牌游戏之小猫钓鱼
缘起性空 文章目录 缘起代码地址纸牌游戏分析代码演示优化 缘起 各位小伙伴们好呀,还有几天就要过年了,祝大家新年快乐,万事胜意! 本人最近看了下《啊哈算法》,确实阔以。 但稍显遗憾的是,书籍示例代码是c语言,而不是本人常用的Java。 那就弥补遗憾,说干就干,把这本书的示例语言用java写一遍, 顺带附上一些自己的理解! 于是本篇博客就横空出世了!!! 本篇
阅读更多...
Java玩转《啊哈算法》解密回文之栈
菩萨清凉月,常游毕竟空,众生心垢净,菩提影现中。 这目录 这开头这代码地址栈案例代码优化建议类似扩展 这开头 各位女士们,先生们好!本人最近在看《啊哈算法》,这本书写的确实还可以,很有趣味性。 但略微遗憾的是,书籍示例代码是c语言,而不是本人常用的Java。 那就弥补遗憾吧。于是乎说干就干,把这本书的示例语言用java写一遍, 顺带夹杂一些私货,附上自己的一些理解!
阅读更多...
Java玩转《啊哈算法》解密QQ号之队列
行有不得,反求诸己 文章目录 开头代码地址引子案例分析代码 队列封装升级演示 开头 各位好!本人在看《啊哈算法》,写的确实不错。 但略微遗憾的是,书籍示例代码是c语言,不是本人常用的Java。 那就弥补遗憾,说干就干,把这本书的示例语言用java过一遍, 顺便附上自己的一些理解! 于是就有了本篇博客,本篇博客主要是讲常见数据结构的一种:队列。 来不及买纸质书但
阅读更多...
Java玩转《啊哈算法》排序之冒泡排序
色即是空,空即是色 文章目录 楔子代码地址冒泡排序核心代码优劣可视化完整代码演示 升级版代码演示 实战 楔子 大家好!本人最近看了下《啊哈算法》,写的确实不错,生动形象又有趣(希望作者打波广告费 )。 但对我来说,稍显遗憾的是,书籍代码是c语言,而不是本人常用的Java。 那就弥补遗憾,说干就干,把这本书的示例语言用java给翻译一遍!!! 于是就有了本篇博客,这篇
阅读更多...
啊哈C语言,逻辑的挑战
C语言基本框架 #include <stdio.h>#include <stdlib.h>int main(){return 0;} 代码 1.printf(“内容”); , 说出 例: printf("ni hao"); 2.system(“pause”); , 暂停 3.\n , 换行 例:printf("ni hao\n"); printf("%d\n",a); 4.s
阅读更多...
啊哈c语言——5.9逻辑挑战11(猜数游戏)
计算机会随机地给出0~99之间的一个整数,你能否猜出这个数呢?每猜一次,计算机都会告诉你猜的数是大了还是小了,直到你猜出这个数为止。 首先我们需要解决的第一个问题就是如何让计算机随机地产生一个整数,这个很简单: #include <stdio.h>#include <stdlib.h>int main(){int a;a = rand();printf("
阅读更多...
啊哈c语言——逻辑挑战8:验证哥德巴赫猜想
上面这封书信是普鲁士数学家哥德巴赫在1742年6月7日写给瑞士数学家欧拉的,哥德巴赫在书信中提出了“任一大于2的整数都可以写成3个质数之和”的猜想。当时,哥德巴赫遵照的是“1也是素数”的约定。现今,数学界已经不使用这个约定了。哥德巴赫原猜想在现代被陈述为: 任一大于5的整数都可写成3个质数之和。1742年6月30日欧拉在回信中注明,此猜想可以有另一个等价的版本,即“任一大于2
阅读更多...
啊哈c语言——逻辑挑战7:奔跑的小人
质数,又称为素数,指大于1的自然数,除了1和该整数自身外,无法被其他自然数整除(也可定义为只有1和它本身两个约数的数)。 比1大但不是质数的数称为合数。1和0既非质数也非合数。20以内 的质数有2、3、5、7、11、13、17和19。 如果要让计算机判断一个正整数是否为质数,最直接的方法就是从质数的定义出发。如果这个数只能被1和它本身整除, 即只
阅读更多...
啊哈c语言——4.10(练习)
1.请尝试用for循环打印下面的图形。 #include <stdio.h>#include <stdlib.h>int main(){int a,b,c,d,e;for(a = 1;a < 10;a++){if(a < 5){b = a * 2 - 1;c = 5 - a;}else{b = 9 - (a - 5) * 2;c = a - 5;}for(d = 0;d < c;d +
阅读更多...
啊哈c语言——4.1(一起来找茬)
下面这段代码是让计算机“永无止境”地打印hello。其中有两个错 误,快来改正吧! 改正后: #include <stdio.h>#include <stdlib.h>int main( ){while(1>0)printf("hello");system("pause");return 0;} 运行效果:
阅读更多...
啊哈c语言——4.4求和(一起来找茬)
下面这段代码是求1×2×3×4×5×6×7×8×9×10的值。其中有3个错误, 快来改正吧! 改正后: #include <stdio.h>#include <stdlib.h>int main(){int a,i;a=1;i=1;while(i<=10){a=a*i;i=i+1;}printf("%d",a);system("pause");return 0;} 运行如下:
阅读更多...
啊哈c语言——3.3偶数判断(一起来找茬)
一起来找茬 下面这段代码用来判断一个数是否是7的倍数。其中有4个错误,快来改正吧! 修改后: #include <stdio.h> #include <stdlib.h> int main() { int a; scanf("%d",&a); if (a%7==0) { printf("yes"); } system("pau
阅读更多...
啊哈c语言——4.2(一起来找茬)
下面这段代码是让计算机从100打印到200。其中有3个错误,快来改正吧! 改正后: #include <stdio.h>#include <stdlib.h>int main(){int a;a=100;while(a<=200){printf("%d\n", a);a=a+1;}system("pause");return 0;} 运行效果:
阅读更多...
啊哈C语言——让计算机做加法运算
啊哈C语言——让计算机做加法运算 通过前面的学习,我们知道了如何计算机开口说话 那么现在,我们来看看计算机如何做加法运算。 加法 #include <stdio.h>#include <stdlib.h>int main(){int a,b,c;a = 1;b = 2;c = a+b;printf("c的值为%d",c);return 0;} 我们看一下结果 分析一下代码。 int
阅读更多...
队列(啊哈算法)
普通代码: #include<bits/stdc++.h>using namespace std;int main(){int q[102] = {0,6,3,1,7,5,8,9,2,4},head,tail;int i;head = 1;tail = 10; //队列中已经有9个元素了,tail指向队尾的最后一个位置while(head < tail){//打印队首并将队首出队 cout
阅读更多...