数据结构与算法
cchoop
热爱编程,热爱游戏
展开
-
数组查找元素二分法
二分法原理:对一个已经排序好的数组进行取中值,把中值与数据比较,如果数据更大,则向左继续进行二分法。否则向右,依次进行下去…直到遍历到原数组的第一个元素,或者最后一个元素停止寻找。可以用循环,或者递归。 查找元素二分法前提是:数组已经是排好序的 循环实现:static int Select(int[] arr,int value){ bool flag = true; ...原创 2018-06-27 19:37:03 · 666 阅读 · 0 评论 -
动态规划 - 01背包问题
问题描述: 假设现有容量m kg的背包,另外有i个物品,重量分别为w[1] w[2] … w[i] (kg),价值分别为p[1] p[2] … p[i] (元),将哪些物品放入背包可以使得背包的总价值最大?最大价值是多少? (示例一:m=10 i=3 重量和价值分别为 3kg-4元 4kg-5元 5kg-6元 )using System;using System.Text;...原创 2018-08-08 20:42:10 · 214 阅读 · 0 评论 -
动态规划 - 钢条切割问题
钢条切割问题介绍假定我们知道sering公司出售一段长度为I英寸的钢条的价格为pi(i=1,2,3….)钢条长度为整英寸如图给出价格表的描述(任意长度的钢条价格都有)先给我们一段长度为n的钢条,问怎么切割,获得的收益最大 rn? 钢条价格表: 题目分析:一条n段的钢条,可以分割成1段、2段…n-1段,最多分割成n段来卖,求出售卖价格总数和的最大。 考虑n=4的时候 1.递归方法...原创 2018-08-08 15:00:43 · 710 阅读 · 0 评论 -
堆排序(HeapSort)
堆排序(HeapSort)动图显示: 将数组当作二叉树来进行处理将二叉树构造成大顶堆(根节点的值大于或等于左右子树的值)或小顶堆(根节点的值小于或等于左右子树的值) 将二叉树的头结点和树的最末端交换(此时数组末尾是最大值),然后对剩下的length-1个数再进行构造大顶堆操作再将树的头结点和树的末端交换。。。(依次进行下去) using System;namespace...原创 2018-08-07 18:23:59 · 167 阅读 · 0 评论 -
二叉排序树(BinSortTree)
二叉排序树介绍二叉排序树,又称为二叉查找树。它或者是一棵空树,或者是具有下列性质的二叉树。 若它的左子树不为空,则左子树上所有的结点的值均小于根结构的值; 若它的右子树不为空,则右字数上所有结点的值均大于它的根结点的值; 它的左右子树也分别为二叉排序树。 1,排序方便 2,方便查找 3,方便插入和删除二叉排序树最终实现:所有的左子树的值都小于父节点的值,...原创 2018-08-07 15:16:41 · 468 阅读 · 0 评论 -
求单调递增最长子序列(动态规划)
题目描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 aaa ababc abklmncdefg样例输出 1 3 7解题思路:从前往后遍历,计算每一个字符处于递增序列(在这个字符之前的最...原创 2018-08-02 13:54:22 · 1498 阅读 · 0 评论 -
输出能整除n这个由1组成的数中最少有多少个1
题目信息:输出能整除n这个由1组成的数中最少有多少个1,前提是n不能被2和5整除!且n为int范围内的数 解析:即n能被由多少个1组成的数整除。如n=3 时111%3==0,即1的个数为3样例输入 3 7 9901样例输出 3 6 12 代码实现:using System;namespace cchoop{ clas...原创 2018-08-01 14:39:31 · 817 阅读 · 0 评论 -
偶数个3
题目描述 在所有的N位数中,有多少个数中有偶数个数字3? 输入 第一行为一个整数T,代表有T组数据。(T<10000) 接下来T行,每行一个正整数N。(1<=N<=1000) 输出 每行输出一个整数,即方案数(由于结果可能很大,你只需要输出这个答案mod 12345的值。)。 样例输入 3 2 3 4样例输出 8 73 ...原创 2018-07-31 17:44:03 · 749 阅读 · 0 评论 -
不吉利的数字
题目描述 一些普通的数字在很多人眼里是不吉利。如数字4,谐音“死”,所以很多地方都没有带4的数字:比如新校区澡堂衣柜编号及没有4;再如数字13,在西方人眼中代表着坏运气,也是不吉利的数字,13不出远门,楼层不设第13层等等。假如某些人认为0是不吉利的数字,并且在他们以后的生活中,记录数据都在不在使用含有0的自然数。他们记录数的序列是1,2,3,4,5,6,7,8,9,11,12,13,...原创 2018-07-31 14:14:37 · 3515 阅读 · 0 评论 -
擅长排列的小明(acm算法题)
using System;namespace cchoop{ class Program { static int num1 = 5; static int num2 = 2; static int[] arr; public static void Main() { ...原创 2018-08-03 18:26:21 · 262 阅读 · 0 评论 -
最大子数组问题 - (暴力求解+分治法)
股票问题 1.暴力求解 2. 分治法题目解析:根据价格的变化,求出股票在哪天买入哪天卖出,收益会最大。暴力求解:遍历每一个子数组区间,比较大小,并记录最大收益的开始和结束的下标代码实现:using System;namespace cchoop{ class Program { public static void Main() ...原创 2018-07-30 12:21:11 · 1597 阅读 · 0 评论 -
递归打印出指定index位置上的斐波那契数(c#实现)
题目:递归打印出指定index位置上的斐波那契数using System;namespace cchoop{ class Program { static void Main(string[] args) { //1 1 2 3 5 Console.WriteLine(GetFibonacci...原创 2018-07-20 17:47:30 · 714 阅读 · 0 评论 -
c#实现List集合
using System;using System.Collections;using System.Collections.Generic;using System.Linq;namespace cchoop{ class Program { static void Main(string[] args) { L...原创 2018-07-14 14:04:34 · 4773 阅读 · 0 评论 -
c#实现LinkedList集合
using System;using System.Collections;using System.Collections.Generic;using System.Linq;namespace cchoop{ class Program { static void Main(string[] args) { M...原创 2018-07-15 13:45:11 · 6538 阅读 · 0 评论 -
常见的几种排序方法(c#实现+动图演示)
冒泡排序冒泡排序:比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置,直到没有元素再需要交换,排序完成。 代码实现:using System;namespace cchoop{ class Program { static void Main(string[] args) { int[] arr...原创 2018-07-19 15:44:06 · 1447 阅读 · 1 评论 -
c#实现快速排序(挖坑法,分而治之)
快速排序的思想:选择一个基准数(一般为左边第一个数),比它大的排在它的右边,比它小的排在右边,然后以这个数为基准线,对左右分而治之,重复上面的操作。下面是从网友 那里盗的图,方便理解: 原图链接点我 代码:using System;using System.Collections;using System.Collections.Generic;namespace ...原创 2018-07-18 17:22:41 · 447 阅读 · 0 评论 -
实现一个栈,属性Min返回最小值,操作的时间复杂度为o(1)
题目:实现一个栈,要求实现出栈pop(),入栈push(),Min返回最小值的操作的时间复杂度为o(1); 思路:要使这些操作的时间复杂度为o(1),则必须保证栈的每个元素只被遍历一次代码实现:using System;using System.Collections;using System.Collections.Generic;namespace cchoop{ ...原创 2018-07-17 17:25:03 · 268 阅读 · 0 评论 -
封装一个集合(实现栈Stack和队列Queue的功能)
封装一个集合: 1.提供push(T value)在尾部添加新元素, 2.pop()删除并返回最后一个元素, 3.shift()删除并返回第一个元素, 4.unshift(T value)在首位添加新元素; 5.底层可以用数组,list或者链表模式保存数据顺序结构如下: 难点:数组循环存储using System;using System.Coll...原创 2018-07-17 15:59:42 · 432 阅读 · 0 评论 -
A星寻路算法
A星寻路算法介绍你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢?如果是的话,请看这篇教程,我们会展示如何使用A星寻路算法来实现它!在网上已经有很多篇关于A星寻路算法的文章,但是大部分都是提供给已经了解基本原理的高级开发者的。本篇教程将从最基本的原理讲起。我们会一步步讲解A星寻路算法,幷配有很多图解和例子。不管你使用的是什么编程...转载 2018-09-12 15:49:22 · 782 阅读 · 0 评论