
数据结构
文章平均质量分 90
Co丿Hx
西南石油大学CS研究生。发表ccfc类论文两篇,专利一项,获国家奖学金等多项奖学金,现就职于招银网络科技。
展开
-
OCR评价指标-编辑距离
概念编辑距离为字符串A到字符串B最少需要的操作次数,操作次数定义为,插入一个字符,删除一个字符,增加一个字符。ex: hello hexlo 答案1,修改一个字符为xex: hello hellso 答案1,删除一个字符s思路创建一个二维数组,行列,分别为各自的字符长度+1。动态规划转移方程如果 当前 str1[i-1] == str2[j-1] 则 dp[i][j] = dp[i-1][j-1]如果 不等 则dp[i][j] = min(dp[i-1][j-1],dp[.原创 2020-06-23 10:15:45 · 2176 阅读 · 0 评论 -
1到n中0与1的个数统计
病毒(3602017秋招真题)题目描述小B最近对破解和程序攻击产生了兴趣,她迷上了病毒,然后可怕的事情就发生了。不知道什么原因,可能是小B的技术水平还不够高,小B编写的病毒程序在攻击一个服务器时出现了问题。尽管成功的侵入了服务器,但并没有按照期望的方式发挥作用。小B的目的很简单:控制服务器的内存区域,试图在内存中装入从1到n之间的n个自然数,以覆盖内存区域。可能是小B对编程理解上的问...原创 2020-03-24 16:56:41 · 906 阅读 · 0 评论 -
leetcode 1 两数之和
题目描述思路1.直接两重for循环 O(n方)2.排序O(nlogn)3.hashmap前两种方法比较简单,第三种方法理解。map 存储 健为值 val为下标。每次便利时,使用count会查找前面每个数是否存在,相当于两重循环,但是map效率非常高所以使用map。代码class Solution {public: vector<int> ...原创 2020-03-15 13:48:47 · 160 阅读 · 0 评论 -
c语言实现排列
感觉编程的时候是孰能生巧,之前对于dfs一直觉得是高大上的样子,直到最近敲了几次后发现总是有套路的,总结套路如下首先有3个全局变量1.visit 数组 标记走过的内容2.flag 数组 标记数组是否走过3.m,n 是一个全局变量 用作于遍历中的step,也就是用于试探下一步是否可走其次dfs 会调用本身 大体结构void dfs(int n){ i...原创 2019-03-24 19:26:03 · 587 阅读 · 0 评论 -
十进制转二进制 递归
#include<stdio.h>void dfs(int n){ if(n==0) return; dfs(n/2); printf("%d",n%2); //递归逆序输出}int main(){ int input; scanf("%d",&input); printf("%X\n",input); printf("%o\n",input); ...原创 2019-03-19 17:03:53 · 768 阅读 · 0 评论 -
杭电ACM1004
#include<iostream>using namespace std;int main(){ char ballnoon[1000][15]; int count[1000]; int n,i; while(cin >> n) { if(n==0) break; for(i=0;i<n;i++) cin >> b...原创 2018-08-28 08:45:29 · 408 阅读 · 0 评论 -
表达式求值C
对于栈的经典应用之一表达式求值。先贴代码然后在分析。代码实现基本的表达式求值#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>#define INITSIZE 100#define INCREMENT 10typedef struct ...原创 2018-08-23 11:15:18 · 2382 阅读 · 3 评论 -
Hamming Weight算法分析。
什么是Hanmming weight?Hanmming weight简单来说就是求一个串中1的个数。可以求8位中的,也可以求16位中的,也可以求32位,64位中的1的个数。For the most typical case, a string of bits, this is the number of 1's in the string, or the digit sum of原创 2018-01-20 20:21:10 · 3231 阅读 · 0 评论 -
c语言在一段段落中匹配一个单词出现次数
#includeint match(char *a,char *b)//a表示输入的英文段落 b表示即将要匹配的单词{ char *temp; //用来存放匹配的单词 int count = 0; // temp = b; //用temp将b存储 while(*a!='\0') //用来判断a段落是否扫描完 {原创 2015-10-15 20:17:47 · 2851 阅读 · 3 评论 -
一元多项式的相加 数据结构链表实现
#include#includetypedef struct Node{ float coe; //系数 int index; //指数 Node *next;}*polynomial; //操作名void Initpolynomial(polynomial &L) //创建原创 2015-10-11 20:54:01 · 2017 阅读 · 0 评论 -
数据结构栈应用之进制转换
#include#includetypedef int Elem;typedef int Status;#define ERROR 0#define OK 1typedef struct Node{ char elem; Node *next;}Node,*Sqstack;Sqstack top = NULL; //链栈规定唯一的栈顶topStatus原创 2015-10-16 20:02:21 · 434 阅读 · 0 评论 -
冒泡排序优化以及插入排序(本文注释较少适合有一定基础的观看)
#include#define cnt 6 //定义排序个数//冒泡排序优化void Bubble_Sort(int A[],int N){ for(int P = N - 1; P >= 0;P--) { int flag = 0; //定义一个flag判断之后的序列是否有序 for(int i = 0;i < P;i++)原创 2015-07-24 11:50:26 · 670 阅读 · 0 评论 -
快速排序优化通过中位数优化
#include//交换位置传入两个地址void Swap(int *a, int *b) { int temp; temp = *b; *b = *a; *a = temp;}//求出三个数的中位数并且将pivot(关键字放在i-1的位置上)int Median3(int A[],int Left,int Right) //left = 起点 right = 终点{原创 2015-07-23 19:26:23 · 952 阅读 · 1 评论 -
归并排序及具体介绍
#include#include//复杂度分析//T(N) = T(N/2) + T(N/2) + O(N) T(N) = O(NlogN)//归并作用是将两个序列合并 L = 左边起始位置,R = 右边起始位置 RightEnd = 右边终点位置 void Merge(int A[],int TmpA[],int L,int R,int RightEnd){原创 2015-07-23 13:40:36 · 574 阅读 · 0 评论 -
归并之将两个有序数组合并(已测试)
#include#include//归并作用是将两个序列合并 L = 左边起始位置,R = 右边起始位置 RightEnd = 右边终点位置 void Merge(int A[],int TmpA[],int L,int R,int RightEnd){ int LeftEnd = R -1; //左边终点位置 左右两列挨着 int Tmp = L;原创 2015-07-23 12:35:56 · 810 阅读 · 0 评论 -
二叉数组的创建删除插入查找
#include#includetypedef struct TreeNode *BinTree; //定义一个对象指针typedef BinTree Position; //定义一个对象指针名struct TreeNode{ int Data; BinTree Left; BinTree Right;};//二叉搜索数的查找Find Positi原创 2015-07-21 16:54:27 · 547 阅读 · 0 评论 -
图的大体架构以及主要知识
首先把图分为4点来定义1.什么是图 图的定义图就是由两个集合组成的含有定点集合以及边集合分为有向图无向图2.图的存储邻接矩阵:行:表示尾(通过遍历非0元素个数可以知道入度)列:标示头(通过遍历非0元素个数可以知道出度)原创 2015-07-21 12:52:19 · 857 阅读 · 0 评论 -
Palindrome Linked List 234
判断是否为回文链栈 时间复杂度为O(n) 空间复杂度为O(1) ;运用递归 保证空间复杂度为O(1);时间复杂度为O(n);注意定义了一个全局变量 flag = true 用此标记来标记是否在判断中出现了不满足条件的数传入参数是不能传入有空指针的头结点//判断是否为回文链栈 void judgePalindrome(LinkStack *head1,LinkStack *&head2原创 2015-07-19 13:10:23 · 660 阅读 · 0 评论 -
小孩报数问题3750
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。解法一双向循环链表设计创立 删除#include#include#includeusing namespace std;struc原创 2015-07-16 18:31:18 · 809 阅读 · 0 评论