
数据结构
文章平均质量分 90
子墨777
Try to make yourself more excellent!
展开
-
MDCSpell: A Multi-task Detector-Corrector Framework for Chinese Spelling Correction(ACL2022)
作者认为基于Bert的纠错模块直接对句子的每个字符进行校正,这不是最优的,因为它们只根据上下文来纠正句子的每个字符,而上下文很容易被拼写错误的字符误导。还有一些工作提出使用错误检测器(error detector)通过mask掉检测到的错误来指导校正。然而,这些方法抑制了拼错字符的视觉或语音特征,而这些特征对校正至关重要。为此,提出了一种新的通用检测-校正多任务框架,其中校正器使用BERT来捕获原始句子中每个字符的视觉和语音特征,检测器使用一个轻型transformer来检测拼错字符的位置。原创 2024-11-02 07:57:01 · 463 阅读 · 0 评论 -
Chinese Spelling Correction as Rephrasing Language Model(AAAI2024)
目前最先进的方法将CSC(Chinese Spelling Correction)作为序列标注任务,并在句子对上微调基于bert的方法。然而,我们注意到在将一个字符标注为另一个字符的过程中存在一个严重缺陷,即校正过于依赖于错误。这与人类的思维方式相反,在人类的思维方式中,人们根据语义重新表述完整的句子,而不是仅仅根据之前记忆的错误模式。这样对于机器纠错带 来了通用性和移植性瓶颈。原创 2024-11-02 07:56:44 · 751 阅读 · 0 评论 -
求最长公共子序列
给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,输入样例:4 5acbdabedc输出...原创 2020-03-28 14:46:23 · 345 阅读 · 0 评论 -
01 背包问题
有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有N行,每行两个整数vi,wi,用空格隔开,分别表示第i件物品的体积和价值。...原创 2020-03-28 10:46:41 · 196 阅读 · 0 评论 -
二分查找 递归与非递归
int binarysearch(int array[],int low, int high,int target){ if(low<=high){ int mid = (low + high)/2; if (array[mid]==target){ return mid; } else if...原创 2020-03-11 15:57:32 · 94 阅读 · 0 评论 -
从上到下打印二叉树
// 从上到下打印二叉树void printtree(Tree * tree){ if (tree ==NULL){ return; } dequeue<Tree*> s; s.push_back(tree); while(!s.empty()){ Tree *temp = s.front(); ...原创 2020-03-11 15:01:26 · 87 阅读 · 0 评论 -
树的遍历 递归与非递归实现
void preorder(Tree *tree){ if(t==NULL){ return; } cout<<tree->val<<endl; preorder(tree->left); preorder(tree->right);}void inorder(Tree *tree){...原创 2020-03-11 14:43:29 · 109 阅读 · 0 评论 -
快速排序算法的递归与非递归
//quick sortvoid quicksort (int array[], int low, int high){ if(low<high){ int index = getindex(array,low,high); quicksort(array,index+1,high); quicksort(array,0,high...原创 2020-03-11 11:05:21 · 199 阅读 · 0 评论 -
计算树的深度
int treedepth(binarytree *tree){ if(tree==NULL){ return 0; } int left = treedepth(tree->left); int right = treedepth(tree->right); return (left> right) ? left++...原创 2020-03-10 18:25:41 · 2191 阅读 · 0 评论 -
求两个单链表的共同节点
int getlength(ListNode* listnode){ int count =0; ListNode* temp = listnode; while(temp!=NULL){ count ++; temp = temp->next; }}Listnode * getcommon(ListNode* li...原创 2020-03-10 18:01:09 · 247 阅读 · 0 评论 -
c++ 归并排序
void merge(int array,int L;int mid; int R){ int p1 = L,p2 = mid+1, i=0; int temp[L+R-1]; while (p1<mid && p2<R){ temp[i++] = array[p1] < array[p2] ? array[p1++] ...原创 2020-03-10 17:35:21 · 100 阅读 · 0 评论 -
树的遍历
void preordersearch(Tree * t){ if(t == NULL){ return; } cout<<t->val<<endl;//先序遍历,根左右 preordersearch(t->left); preordersearch(t->right);}void inor...原创 2020-03-09 15:03:47 · 100 阅读 · 0 评论 -
欢迎使用优快云-markdown编辑器
如何使用两个栈来实现队列 算法导论第十章课后思考题目 今天拿到了刚买的算法导论一书,开始学习数据结构,虽然之前大学期间也上过数据结构的课程,但是真正学习到的东西确实只有一点点皮毛。下面开始我们自己的方法,如何使用两个栈来模拟实现一个队列呢。栈具有先进后出的功能,队列具有先进先出的功能。 定义两个栈分别为s1,s2。 方法一: 在这里我们定义s1来作为存储区,s2来作为临时缓冲区。第一原创 2017-09-03 16:32:34 · 246 阅读 · 0 评论