摘要:
#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;class Bayes{private: vector attribute; vector>data; double GetPosPrior() { int count=0; for(vector>::iterator iter=data.begin();iter!=data.end();++iter) { if((*iter)[4]== 阅读全文
摘要:
n 支队伍比赛,分别编号为 0,1,2。。。。n-1,已知它们之间的实力对比关系,存储在一个二维数组 w[n][n]中,w[i][j] 的值代表编号为 i,j 的队伍中更强的一支。所以 w[i][j]=i 或者 j,现在给出它们的出场顺序,并存储在数组 order[n]中,比如 order[n] = {4,3,5,8,1......},那么第一轮比赛就是 4 对 3, 5 对 8。.......胜者晋级,败者淘汰,同一轮淘汰的所有队伍排名不再细分,即可以随便排,下一轮由上一轮的胜者按照顺序,再依次两两比,比如可能是 4 对 5,直至出现第一名编程实现,给出二维数组 w,一维数组 ... 阅读全文
摘要:
AC自动机简介:首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有字典树Trie和KMP模式匹配算法的基础知识。KMP算法是单模式串的字符匹配算法,AC自动机是多模式串的字符匹配算法。AC自动机的构造:1.构造一棵Trie,作为AC自动机的搜索数据结构。2.构造fail指针,使当前字符失配时跳转到具有最长公共前后缀的字符继续匹配。如同 KMP算法一样, AC自动机在匹配时如果当前字符匹配 阅读全文
摘要:
char *ToBinary(char *buffer,float x){ int k=0; if(x=0)buffer[k++]=temp[i--]; if(b==0) { buffer[k]='\0'; return buffer; } buffer[k++]='.'; for(i=0;i<23;i++) { int t=b*2; buffer[k++]=t+48; b=b*2-t; } if(b!=0) cout<<"ERROR"<<endl; buffer[k++]='\0'; retur 阅读全文
摘要:
#include#include#include#include#include#include#include"Test.h"#include#includeusing namespace std;char *buffer=new char[24];int len=24;templateclass CStack{ struct Node { Node *next; T value; public: Node():next(NULL){} }; void *freehead; Node *shead[3]; v... 阅读全文
摘要:
int add(int a,int b){ if(a==0) return b; if(b==0) return a; int m=a^b; // 二进制加法,应当是异或加上与运算 int n=a&b; n=n<<1; if(m&0x1==1) // 为了防止两个数都不收敛于零。事实证明,完全可以收敛 { m=m&~0x1; return 0x1|add(m,n); } return add(m,n);} 阅读全文
摘要:
int CountNumInSortArray(int a[],int n,int key){ if(a==NULL||nkey)j=m-1; else { j=m; isFind=true; if(i==j) break; } } coutkey)j=m-1; else { i=m; } } int end; if(i+1==j&&a[i]==a[j]) { end=j; } else end =i; return end-start+1;} void main(){ int a[]={1,2,3,3,3,3,4,5}; try { int num... 阅读全文
摘要:
int g_comb_count=0;void combination_Core(char *s,int a[],int i){ if(*s=='\0') { bool flag=false; for(int j=0;j(a[j]); flag=true; } if(flag) { g_comb_count++; cout<<endl; } } else { combination_Core(s+1,a,i); a[i++]=*s; combination_Core(s+1,a,i); }}void combination(char *s){ g_comb_cou. 阅读全文
摘要:
// 把二叉树转换成双向链表.struct BinaryTreeNode{ int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight;public: BinaryTreeNode(int v):m_nValue(v),m_pLeft(NULL),m_pRight(NULL){}};void Convert(BinaryTreeNode *t,BinaryTreeNode **head,BinaryTreeNode **last){ BinaryTreeNode *lh,*ll,*rh,*rl; ... 阅读全文
摘要:
// 栈的压入、弹出顺序// a表示压入顺序,b表示弹出顺序。bool IsStackOrder(int a[],int b[],int n){ if(a==NULL||b==NULL||n vec; int i,j; j=-1; for(i=0;i<n;i++) { if(!vec.empty()&&b[i]==vec.back())// 栈顶的情况 { vec.erase(vec.end()-1); } else { j++; while(j<n&&a[j]!=b[i]){vec.push_back(a[j]);j++;} // 在后面的序列当中 阅读全文