“人造太阳”计划

单词规律(word-pattern)

限于喜欢 提交于 2020-01-11 07:45:42
文章目录 单词规律(word-pattern) 代码与思路 补充知识 C++ map用法 1、map最基本的构造函数; 2、map添加数据; 3、map中元素的查找: 4、map中元素的删除: 5、map中 swap的用法: 6、map的sort问题: 7、map的基本操作函数: 参考资料 单词规律(word-pattern) 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern = "abba", str = "dog cat cat dog" 输出: true 示例 2: 输入:pattern = "abba", str = "dog cat cat fish" 输出: false 示例 3: 输入: pattern = "aaaa", str = "dog cat cat dog" 输出: false 示例 4: 输入: pattern = "abba", str = "dog dog dog dog" 输出: false 说明: 你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。 代码与思路 class Solution { public :

Trie树与AC自动机

自作多情 提交于 2020-01-10 02:56:40
Trie树与AC自动机 作为现阶段的学习中个人应有的常识,AC自动机形象的来讲就是在Trie树上跑的一个KMP。由此,我们就先来谈一谈Trie树。(有图) 1. Trie树 又称单词查找树,字典树,一般用于字符串的匹配。它利用公共的字符串前缀进行查询,减少了无谓的操作,是空间换时间的经典算法。举例: 此图包含了{"to", "tea", "ted", "ten", "a", "i", "in", "inn"}这些字符串。 Trie树的基本性质可以归纳为: 根节点不包含字符,除根节点意外每个节点只包含一个字符。 从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。 每个节点的所有子节点包含的字符串不相同。 Trie树有两个基本操作,一为插入,二为删除,且两者复杂度均为 \(O(len)\) (其中$len = $ 字符串长度)。 我们以对五个串 aaaa , abb , aabbb , baa , bab 的操作进行说明。 1.基本操作 1.插入 插入 aaaa 首先插入串 aaaa 。对树中没有的节点进行新建,连接。结果: 对,就是这样的简单插入。(图中红色字母代表一个单词的结尾) 插入 abb 再插入串 abb 。在插入时,已有的节点直接走过去,没有的就插入再走过去。结果: 1.插入 a 2.插入 b 3.再插入 b 完成。 3.插入 aabbb 不再赘述

EffectiveC++ 第7章 模板与泛型编程

拥有回忆 提交于 2020-01-09 21:08:00
我根据自己的理解,对原文的精华部分进行了提炼,并在一些难以理解的地方加上了自己的“可能比较准确”的「翻译」。 Chapter 7 模版与泛型编程 Templates and Generic Programming 本章无法使你成为一个专家级的template程序员,但可以使你成为一个比较好的template程序员。本章也会给你必要信息,使你能够扩展你的template编程,到达你所渴望的境界。 条款41 : 了解隐式接口和编译器多态 在oop的世界里,我们总是以显式接口(explicit interfaces)和运行期多态(runtime polymorphism)解决问题。举个例子,给定这样(没啥意义)的class: class Widget{ public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); void swap(Widget& other); //见条款25 ... }; 和这样的函数(也没啥意义): void doProcessing(Widget& w) { if(w.size()>10 && w != someNastyWidget){ Widget temp(w); temp.normalize(); temp.swap(w);

系统学习图像算法Day.37——C++应用——复现机器学习中的“逻辑回归”算法

≯℡__Kan透↙ 提交于 2020-01-09 12:33:27
逻辑回归 是为了解决在样本标记为0、1时,希望预测其取1概率 的问题,而不是单纯预测为0或1 在学习逻辑回归后,自己用C++复现该代码 # include <iostream> # include <cmath> # include <fstream> # include <vector> using namespace std ; const int DIMS = 20 ; char * file1 = "logical_regression_train.dat" ; char * file2 = "logical_regression_test.dat" ; struct training_unit //每个X数据结构体 { double x [ DIMS + 1 ] ; int y ; } ; vector < training_unit > training ; //用来保存X vector < training_unit > test ; int sign ( double signx ) //sign函数,正为1,负为-1 { int signy ; if ( signx > 0 ) signy = 1 ; else signy = - 1 ; return signy ; } double sigmoid ( double x ) { double y ; y = 1

(原)人体姿态识别Light weight openpose

荒凉一梦 提交于 2020-01-07 17:16:48
转载请注明出处: https://www.cnblogs.com/darkknightzh/p/12152119.html 论文: https://arxiv.org/abs/1811.12004 官方pytorch代码: https://github.com/Daniil-Osokin/lightweight-human-pose-estimation.pytorch 1 简介 light weight openpose是openpose的简化版本,使用了openpose的大体流程。 Light weight openpose和openpose的区别是: a 前者使用的是Mobilenet V1(到conv5_5),后者使用的是Vgg19(前10层)。 b 前者部分层使用了空洞卷积(dilated convolution)来提升感受视野,后者使用一般的卷积。 c 前者卷积核大小为3*3,后者为7*7。 d 前者只有一个refine stage,后者有5个stage。 e 前者的initial stage和refine stage里面的两个分支(hotmaps和pafs)使用权值共享,后者则是并行的两个分支。 2 改进 2.1 骨干网络 论文中分析了openpose各阶段的mAP及GFLOPs 发现从refine stage1之后,性能的提升不是非常明显

算法初步——哈希表B1043输出PATest

那年仲夏 提交于 2020-01-07 14:52:06
#include <bits/stdc++.h> #include<math.h> #include <string> using namespace std; const int MAX_LEN = 10005; char str[MAX_LEN]; int hashTable[30] = {0}; int main(){ cin>>str; int len = strlen(str); int count = 0; //map<char,int> result; for(int i =0;i<len;++i){ if(str[i] == 'P' || str[i] == 'A' || str[i] == 'T' || str[i] == 'e' || str[i] == 's' || str[i] == 't'){ count++; } } map<char,int> result; //vector<char> result[count]; for(int i =0;i<len;++i){ if(str[i] == 'P' || str[i] == 'A' || str[i] == 'T' || str[i] == 'e' || str[i] == 's' || str[i] == 't'){ result[str[i]]++; } } map<char,int>:

python中的next()以及iter()函数

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-07 12:50:36
我们首先要知道什么是可迭代的对象(可以用for循环的对象)Iterable: 一类:list,tuple,dict,set,str 二类:generator,包含生成器和带yield的generatoe function 而生成器不但可以作用于for,还可以被next()函数不断调用并返回下一个值,可以被next()函数不断返回下一个值的对象称为迭代器:Iterator 生成器都是Iterator对象,但list,dict,str是Iterable,但不是Iterator,要把list,dict,str等Iterable转换为Iterator可以使用iter()函数 next()用法: next(iterator[, default]) iterator -- 可迭代对象 default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。 #这里的-1是默认值;当迭代到异常或什么情况,输出-1;当然也可以改为其他值 >>> list_ = [1,2,3,4,5] >>> it = iter(list_) >>> next(it,'-1') 1 >>> next(it,'-1') 2 >>> next(it,'-1') 3 >>> next(it,'-1') 4 >>> next(it,'-1') 5 >>>

python迭代器详解

雨燕双飞 提交于 2020-01-05 07:09:06
迭代器 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 1. 可迭代对象 我们已经知道可以对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫 迭代 。 但是,是否所有的数据类型都可以放到for...in...的语句中,然后让for...in...每次从中取出一条数据供我们使用,即供我们迭代吗? >>> for i in 100:... print(i)...Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'int' object is not iterable>>># int整型不是iterable,即int整型不是可以迭代的​# 我们自定义一个容器MyList用来存放数据,可以通过add方法向其中添加数据>>> class MyList(object):... def __init__(self):... self.container = []... def add(self, item):... self.container.append(item)...>>>

python-类对象的遍历操作

二次信任 提交于 2020-01-05 07:07:51
视频教程 https://study.163.com/course/courseLearn.htm?courseId=1005985001#/learn/video?lessonId=1053351122&courseId=1005985001 #类对象的遍历 #方式一: class Person: def __init__(self): self.age = 0 def __getitem__(self, item): self.age=self.age+1 if self.age >= 10: raise StopIteration('停止遍历') #抛出异常 return self.age d=Person() for i in d:#d 每次执行__getitem__获取它的返回值,遇到异常结束遍历 print(i) print('还在执行吗') #类对象的遍历 #方式二: class Person: def __init__(self): self.age = 0 def __getitem__(self, item): print('__getitem__函数') self.age=self.age+1 if self.age >= 10: raise StopIteration('停止遍历') #抛出异常 return self.age def __iter__

读取CSV文件存入map中(C++)

社会主义新天地 提交于 2020-01-05 05:36:50
  自己平时操作文件用的不多,今天小伙伴让帮忙写一下这个,顺便记一下。实现功能:从"翻译.csv"文件中读取出字符串,以","作为分隔符,将每一行对应存入map中。 代码: #include <iostream> #include <fstream> #include <string> #include <vector> #include <map> using namespace std; int main() { ifstream inFile("翻译.csv", ios::in); if (!inFile.is_open()) { cerr << "Can't open the file" << endl; } string lineStr; map<string, string> translation; while (getline(inFile,lineStr)) { // 分割字符串 int index = lineStr.find(","); string English = lineStr.substr(0, index); string Chinese = lineStr.substr(index+1, lineStr.size()-1); // 存入map translation[English] = Chinese; } //输出 for (map