【经典算法题之(知识补充)------ BFS和DFS的感性认识】教程文章相关的互联网学习教程文章

经典算法题每日演练——第二十三题 鸡尾酒排序【代码】【图】

这篇我们继续扯淡一下鸡尾酒排序,为了知道为啥取名为鸡尾酒,特意看了下百科,见框框的话,也只能勉强这么说了。 要是文艺点的话,可以说是搅拌排序,通俗易懂点的话,就叫“双向冒泡排序”,我想作为码农的话,不可能不知道冒泡排序,冒泡是一个单向的从小到大或者从大到小的交换排序,而鸡尾酒排序是双向的,从一端进行从小到大排序,从另一端进行从大到小排序。从图中可以看到,第一次正向比较,我们找到了最大值9. ...

经典算法题每日演练——第十七题 Dijkstra算法【代码】【图】

原文:经典算法题每日演练——第十七题 Dijkstra算法 或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?可能大家想到了很多诸如“线性规划”,“动态规划”这些经典策略,当然有的问题我们可以用贪心来寻求整体最优解,在图论中一个典型的贪心法求最优解的例子就莫过于“最短路径”的问题。 一:概序 从下图中我要寻找V0到V3的最短路径,你会发现通往他们的两点路径有很多:V0->V4->V3,...

php的经典算法题之分苹果

PHP的算法可以说也是非常强大的, 有人说学PHP等编程语言的,一定要思维逻辑好,那下面这道题程序员大神们都来瞧瞧吧!有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了。没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的那一个扔给了猴,偷走了1/5。第二天,大家分赃,也是分成5份多一个扔给猴了。最后一人分了一份。问:共...

超经典算法题【代码】【图】

字符串逆序函数如何去写?题目内容,写一个函数,要求能够逆序打印字符串的内容。 void run(char * str) {int len = strlen(str);char* left = str;char* right = str + len - 1;while (left<right) {char tmp = *left;*left = *right;*right = tmp;left++;right--; } } int main() {char arr[100] = { 0 };scanf("%s\n", arr);run(arr);printf("%s\n", arr);return 0; } 第二题计算a+aa+aaa+aaaa+aaaaa的前五项之和,其中a是一个数...

php最常见最经典的算法题(1)

题:一群猴子排成一圈,按1,2,3,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈。继续从它后面一位再开始数,数到第m只,再把它踢出去…。如此不停的进行下去,直到最后只剩下一只猴子为止。要求编程模拟此过程,任意输入m、n值,输出最后那一只猴子的编号。 function getMonkeyNumber($n, $m){   $monkeys = range(1, $n); //创建1到n的一维数组   $i=0;   while (count($monkeys)>1) { ...

php 经典的算法题-偷苹果【代码】

有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来,把所有菜果分成5份,但是多了一个,顺手把这个扔给树上的猴了,自己先拿1/5藏了。没想到其他四人也都是这么想的,都如第一个人一样分成5份把多的那一个扔给了猴,偷走了1/5。第二天,大家分赃,也是分成5份多一个扔给猴了。最后一人分了一份。问:共有多少苹果?? for ($i = 1; ; $i++) { if ($i%5 == 1) { //第一个人取五分之一,还剩$t $t = $i...

经典算法题--换汽水瓶【代码】

“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝? Java版import java.io.BufferedInputStream; im...

C++经典算法题-m 元素集合的n 个元素子集【代码】

30.Algorithm Gossip: m 元素集合的n 个元素子集 说明 假设有个集合拥有m个元素,任意的从集合中取出n个元素,则这n个元素所形成的可能子集有那些? 解法 假设有5个元素的集点,取出3个元素的可能子集如下: {1 2 3}、{1 2 4 }、{1 2 5}、{1 3 4}、{1 3 5}、{1 4 5}、{2 3 4}、{2 3 5}、{2 4 5}、 {3 4 5}这些子集已经使用字典顺序排列,如此才可以观察出一些规则: 如果最右一个元素小于m,则如同码表一样的不断加1 如果右边一位已...

C++经典算法题-完美数【代码】

19.Algorithm Gossip: 完美数 说明 如果有一数n,其真因数(Proper factor)的总和等于n,则称之为完美数(Perfect Number), 例如以下几个数都是完美数: 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 程式基本上不难,第一眼看到时会想到使用回圈求出所有真因数,再进一步求因数和,不过若n 值很大,则此法会花费许多时间在回圈测试上,十分没有效率,例如求小于10000的所有完美数 。...

C++经典算法题-八枚银币【代码】

9.Algorithm Gossip: 八枚银币 说明 现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重。 解法 单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的回圈比较来求解,我们可以使用决策树(decision tree),使用分析与树状图来协助求解。一个简单的状况是这样的,我们比较a+b+c与d+e...

10道java经典算法题,每一题都能帮到刚学java的你!【代码】

JAVA经典算法题【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}public static int f(int x){if(x==1 || x==2)return 1;elseretu...

Java经典算法题(1)【代码】

1. Java 的 16 进制与字符串的相互转换函数 /*** 将指定 byte 数组以 16 进制的形式打印到控制台* @param hint String* @param b byte[]* @return void */ public static void printHexString(String hint, byte[] b) {System.out.print(hint);for (int i = 0; i < b.length; i++) {String hex = Integer.toHexString(b[i] & 0xFF);if (hex.length() == 1) {hex = '0' + hex;}System.out.print(hex.toUpperCase() + " ");}System.o...

经典算法题-基础-重构二叉树【代码】【图】

问题描述 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字 例: 前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6} 方法原型 public TreeNode reConstructBinaryTree(int [] pre,int [] in) class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; } } 解题思路 手工还原 虽然本题是一道编程题,但是也经常以填...

经典算法题-基础-找出重复的数字【图】

目录 问题描述 第一种解法:排序+遍历 第二种解法:空间换时间 第三种解法:优化空间 问题描述 题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字 要求 时间限制:1秒 空间限制:32768K 方法原型 public boolean duplicate(int numbers[],int length,int [] duplication) 返回值说明:如果输入有效,并且...

面试经典算法题--爬楼梯 的六种解法【代码】

原文链接:https://blog.csdn.net/yupu56/article/details/90904282面试经典算法题--爬楼梯 的六种解法 题目描述: 假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? 六种解法: /*** 爬楼梯问题其实质就是斐波那契数列!*/ public class ClimbTheStairs {int total; // 1.递归调用 public int fib01(int n) {if (n == 1 || n == 2)total = n;elsetotal = fib01(n - 2) ...