数据结构与算法学习代码
迪迦 • 奥特曼
C/C++ coder
展开
-
多重集组合数-DP
题目:有n种物品, 第i种物品有a个. 不同种类的物品可以互相区分, 但相同种类的无法区分.从这些物品中取出m个, 有多少种取法? 求出数模M的余数.例如: 有n=3种物品, 每种a={1,2,3}个, 取出m=3个, 取法result=6(0+0+3, 0+1+2, 0+2+1, 1+0+2, 1+1+1, 1+2+0).思路:dp[i][j] 表示前i种物品,一共拿了j个物品的方法数为了得到dp[i][j],那么可以从前i-1种物品取j-k个,再从第i种物品取k个即可即 有:然而这转载 2020-07-13 16:47:17 · 371 阅读 · 0 评论 -
01背包问题 图解+详细解析 (转载)
一、题目描述有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?为方便讲解和理解,下面讲述的例子均先用具体的数字代入,即:eg:number=4,capacity=8二、总体思路根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满足最优性原理、找大问题与小问题的递推关系式、填表、寻找解组成)找出01背包问题的最优解以及解组成,然后编写代码实现。三、动态规划的原理动态规划与分治法类似,都是把大问题拆分成小问题,通过寻找大问题与小问题的转载 2020-07-03 19:49:39 · 1448 阅读 · 0 评论 -
八大排序算法(六) 快速排序
#include <stdio.h>#include <time.h>#include <stdlib.h>#define SIZE 10int n[SIZE];void init(int n[], int len){ int i; srand((unsigned)time(NULL)); for (i=0; i<len; i++){ n[i] = r原创 2016-11-07 10:30:18 · 399 阅读 · 0 评论 -
队列的其本应用_迷官问题
问题: 利用队列的假出队,实现迷官问题寻解。 要求: 0 墙 1 路, 寻找最短路, 如果有多条,输出其中一条路。 main.c#include <stdio.h>#include <stdlib.h>#define M 5int map[M+2][M+2];int front = 0, rear = 0;typedef struct Point_def{ int原创 2016-10-05 18:37:28 · 251 阅读 · 0 评论 -
实验:链表
实验:链表(4学时) [问题描述] 创建一个长度为10的单链表,该单链表的表目为随机产生的整型数,试编写算法实现由键盘输入整数值,由此生成长度为10的单链表并检索该链表中有相同整数值的表目个数。 [实验目的] (1)掌握线性表的链式存储结构。 (2)掌握在链表上基本操作的实现。 (3)在掌握链表的基本操作上进行综合题的实现。 [实验内容及要求] (1)创建单链表结构实现基本操作。原创 2016-11-08 08:57:40 · 745 阅读 · 0 评论 -
舞伴问题
说明: 利用队列进行排序,将舞伴进行相应的排序。 实例: 男:ZhangSan LiSi WangWU 女:LiLi LiHua WangHua ZhangMeng ZhaoHua 输出: ZhangSan LiLi LiSi LiHua WangWU WangHuaqueue.h#ifndef queue_h__#define que原创 2016-10-02 10:52:10 · 910 阅读 · 0 评论 -
迷官找出口
要求: 利用栈实现 说明:0为墙,1为路 举例: 4X4的一个迷官 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 入口(1,1) 出口(4,1) 输出路径: (1,1)->(2,2)->(2,3)->(3,4)->(4,4)->(4,3)->(4,2)->(4,1) 否则输出未找到此路。 坐标系 main原创 2016-10-01 21:24:39 · 352 阅读 · 0 评论 -
字符串的基本操做
CMyString.h#ifndef CMyString_h__#define CMyString_h__#define MAX_STRING_SIZE 1024typedef struct cMyString_def{ int length; char str[MAX_STRING_SIZE];}CMyString;void InitCMyString(CMyString*原创 2016-10-25 17:38:42 · 288 阅读 · 0 评论 -
八大排序算法(五) 起泡排序
#include <stdio.h>#include <time.h>#include <stdlib.h>#define SIZE 10int n[SIZE];void init(int n[], int len){ int i; srand((unsigned)time(NULL)); for (i=0; i<len; i++){ n[i] = r原创 2016-11-04 21:49:40 · 820 阅读 · 0 评论 -
八大排序算法(四) 直接选择排序
代码:#include <stdio.h>#include <time.h>#include <stdlib.h>#define SIZE 10int n[SIZE];void init(int n[], int len){ int i; srand((unsigned)time(NULL)); for (i=0; i<len; i++){ n[i]原创 2016-11-04 12:53:10 · 279 阅读 · 0 评论 -
八大排序算法(三) Shell排序
代码:#include <stdio.h>#include <time.h>#include <stdlib.h>#define SIZE 10int n[SIZE];void init(int n[], int len){ int i; srand((unsigned)time(NULL)); for (i=0; i<len; i++){ n[i]原创 2016-11-04 12:29:15 · 391 阅读 · 0 评论 -
八大排序算法(一) 直接插入排序
代码:#include <stdio.h>#include <time.h>#include <stdlib.h>#define SIZE 5int n[SIZE];void init(int n[], int len){ int i; srand((unsigned)time(NULL)); for (i=0; i<len; i++){ n[i] =原创 2016-11-03 12:33:19 · 345 阅读 · 0 评论 -
八大排序算法(二) 折半插入排序
#include <stdio.h>#include <time.h>#include <stdlib.h>#define SIZE 10int n[SIZE];void init(int n[], int len){ int i; srand((unsigned)time(NULL)); for (i=0; i<len; i++){ n[i] = r原创 2016-11-03 17:12:43 · 374 阅读 · 0 评论 -
利用栈将中缀表达式转换为后缀表达式并进行计算
[问题描述] 中缀表达式是最普通的一种书写表达式的方式,而后缀表达式不需要用括号来表示,计算机可简化对后缀表达式的计算过程,而该过程又是栈的一个典型应用。 [实验目的] (1) 深入理解栈的特性。 (2) 掌握栈结构的构造方法。 [实验内容及要求] (1) 中缀表达式中只包含+、-、×、/ 运算及( 和 )。 (2) 可以输入任意中缀表达式,数据为一位整数。 (3) 显示中缀表原创 2016-09-27 09:14:11 · 11836 阅读 · 1 评论 -
向量的基本运算
vector.h#ifndef vector_h__#define vector_h__# include <stdio.h># include <malloc.h>enum boolean {FALSE, TRUE};typedef enum boolean BOOL;typedef int ElementType;typedef struct vector_def{ Eleme原创 2016-09-06 20:21:50 · 999 阅读 · 0 评论 -
栈的基本应用_将字符串逆序输出
stack.h#ifndef stack_h__#define stack_h__#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef enum boolean {FALSE, TRUE} BOOL;typedef int ElementType;typedef struct stack_def{ Eleme原创 2016-09-19 08:08:51 · 2256 阅读 · 0 评论 -
栈的应用_回文字符的判定
stack.h#ifndef stack_h__#define stack_h__#include <stdio.h>#include <malloc.h>#include <stdlib.h>enum boolean{FALSE, TRUE};typedef enum boolean BOOL;typedef int ElementType;typedef struct stack_d原创 2016-09-18 18:04:41 · 695 阅读 · 0 评论 -
栈的基本操做
stack.h#ifndef stack_h__#define stack_h__#include <stdio.h>#include <stdlib.h>enum boolean{FALSE, TRUE};typedef enum boolean Bool;typedef int ElementType;typedef struct stack_def{ int top;原创 2016-09-09 12:52:06 · 353 阅读 · 0 评论 -
约瑟夫问题(Josephus)
共9个坐一圈,由每次第2人开始报数,报到第3个出圈,求出圈顺序。 vector.h#ifndef vector_h__#define vector_h__# include <stdio.h># include <malloc.h>enum boolen{TRUE, FALSE};typedef int ElementType;typedef enum boolen BOOL;typedef原创 2016-09-09 08:38:42 · 262 阅读 · 0 评论