[模板]后缀数组
来源:互联网 发布:哈尔滨公交车查询软件 编辑:程序博客网 时间:2024/06/13 10:59
#include <stdio.h>#include <iostream>#include <set>#define N 1007#include <string.h>#include <algorithm>using namespace std;string s = "abracadabra";int n , k;int r[N];int tmp[N];int sa[N];bool compare_sa(int i, int j) { if (r[i] != r[j]) return r[i] < r[j]; else { int ri = i + k <= n ? r[i+k] : -1; int rj = j + k <= n ? r[j+k] : -1; return ri < rj; }}void construct_sa() { n = s.size(); for (int i=0; i<=n; i++) { sa[i] = i; r[i] = i < n ? s[i] : -1; } for (k=1; k<=n; k*=2) { sort(sa, sa+n+1, compare_sa); tmp[sa[0]] = 0; for (int i=1; i<=n; i++) { tmp[sa[i]] = tmp[sa[i-1]] + (compare_sa(sa[i-1], sa[i]) ? 1: 0); } for (int i=0; i<=n; i++) { r[i] = tmp[i]; } }}int main() { freopen("in.txt", "r", stdin); construct_sa(); for (int i=0; i<=n; i++) { cout << sa[i] << " "; } cout << endl;}
0 1
- 【后缀数组】后缀数组模板
- 后缀数组【模板】
- 【后缀数组模板】
- 后缀数组模板
- 后缀数组模板
- 【模板】后缀数组
- 后缀数组模板
- 后缀数组模板
- 后缀数组模板
- 【省选】【后缀数组】模板
- 后缀数组 模板
- 后缀数组 模板
- 后缀数组模板
- 后缀数组模板
- 后缀数组模板
- 后缀数组模板
- 后缀数组模板
- 模板-后缀数组
- Linux的一些shell命令
- 实战设计模式之命名模式
- 编写JQuery插件总结
- thinkphp 数据库语句拼写
- 自定义 既可输入文字又可选择的 控件ComBox—2
- [模板]后缀数组
- java中io流操作
- java垃圾回收机制---面试的问题
- iOS;ipa文件反编译
- wampserver2.5版本自定义网站根目录and多站点配置
- Wdatepicker日期控件的使用指南
- 融云聊天和IQKeyboardManager键盘上面的Toolbar冲突
- PHP底层探索(四):SAPI的生命周期
- 计算机专业学生必读