蓝桥杯 ALGO-87 子串统计(stl)
2015-03-25 23:12
183 查看
【思路】:简单。试着用stl做了一下。需要注意的地方是,结果是输出长度大于n的出现次数最多的,如果一样输出最长,再一样输出最先出现。
【AC代码】:
【AC代码】:
#include <iostream> #include <algorithm> #include <vector> #include <cstdio> #include <cstring> using namespace std; #define MAX 60+5 struct SubStr { char str[MAX]; int t; }; vector<SubStr> substr; vector<SubStr>::iterator Iter; void check(char temp[]) { int flag = 1; for (Iter = substr.begin(); Iter != substr.end(); Iter++) { if (!strcmp(((*Iter).str), temp)) { (*Iter).t++; return; } } if (flag) { SubStr ss; strcpy(ss.str, temp); ss.t = 1; substr.push_back(ss); } } int main() { //freopen("in.txt", "r", stdin); int n = 0, i = 0, j = 0, k = 0; char str[MAX]; //input cin >> n; cin >> str; for (i = 1; i < strlen(str); i++) { for (j = 0; j <= i; j++) { int l = 0; char temp[MAX];; for (k = j; k <= i; k++) { temp[l++] = str[k]; } temp[l] = '\0'; check(temp); } } //output int max_t = 0, max_len = 0; char res[MAX]; for (Iter = substr.begin(); Iter != substr.end(); Iter++) { if (strlen((*Iter).str) >= n) { if ((*Iter).t > max_t) { max_t = (*Iter).t; strcpy(res, (*Iter).str); max_len = strlen((*Iter).str); } else if ((*Iter).t == max_t) { if (strlen((*Iter).str) > max_len) { max_t = (*Iter).t; strcpy(res, (*Iter).str); max_len = strlen((*Iter).str); } } } } if (n != 0) cout << res; }
相关文章推荐
- 蓝桥杯-算法训练-ALGO-87 字串统计 Java实现
- 蓝桥杯 ALGO-87 算法训练 字串统计
- 蓝桥杯 ALGO-88 算法训练 字串统计
- 蓝桥杯ALGO-73——算法训练 统计字符次数
- 蓝桥杯 ALGO-113 算法训练 数的统计
- 蓝桥杯 ALGO-113 算法训练 数的统计
- 蓝桥杯 ALGO-73 算法训练 统计字符次数
- 蓝桥杯ALGO-87字串统计
- 蓝桥杯 ALGO-113 数的统计(数组、水题)
- 蓝桥杯ALGO-113——算法训练 数的统计
- HDU 2846 Repository (Trie·统计子串)
- 蓝桥杯 ALGO-107 算法训练 9-7链表数据求和操作
- 蓝桥杯--ALGO-2 最大最小公倍数
- 蓝桥杯 ALGO-142 算法训练 P1103
- 蓝桥杯 算法训练 字串统计
- 2017第八届蓝桥杯B组省赛第六题:最大公共子串
- 蓝桥杯 ALGO-21算法训练 装箱问题 java版
- 蓝桥杯 算法训练 ALGO-1 区间k大数查询
- 蓝桥杯 ALGO-111 明明的随机数(排序,去重)
- 蓝桥杯 ALGO-50 算法训练 数组查找及替换