s1

动态规划-最长子序列

匿名 (未验证) 提交于 2019-12-03 00:27:02
递归式: c[i-1][j] 还是 c[i][j-1] 。 代码: int Lcs( string &s1, string &s2, int i, int j, int ** &arr) { if (arr == nullptr ) { arr = new int *[s1.length()+ 1 ]; for ( int i = 0 ; i <= s1.length(); i++) { arr[i] = new int [s2.length()+ 1 ]; } for ( int i = 0 ; i <= s1.length(); i++) { arr[i][ 0 ] = 0 ; for ( int j = 0 ; j <= s2.length(); j++) { arr[ 0 ][j] = 0 ; if (i >= 1 && j >= 1 ) { arr[i][j] = - 1 ; } } } } if (i == 0 || j == 0 ) { arr[i][j] = 0 ; return arr[i][j]; } if (arr[i][j] != - 1 ) { return arr[i][j]; } if (s1[i- 1 ] == s2[j- 1 ]){ arr[i][j]= Lcs(s1, s2, i - 1 , j - 1 ,arr) + 1 ; } else {

clientDataSet转换sql

匿名 (未验证) 提交于 2019-12-03 00:11:01
function TFRMSOEDIT.vartosql(value: Variant): wideString; var tmp: widestring; begin if (varisnull(value)) or (varisempty(value)) then Result := 'NULL' else case Vartype(value) of varDate: begin tmp := formatDatetime('yyyy-mm-dd hh:mm:ss', VartoDatetime(value)); Result := Quotedstr(tmp); end; varString, varOlestr: Result := Quotedstr(Trim(Vartostr(value))); varboolean: begin if value then Result := '1' else Result := '0'; end; varSmallint, varInteger, varDouble, varShortInt, varInt64, varLongWord, varCurrency: begin Result := trim(Vartostr(value)); end; else Result := Quotedstr(Trim(Vartostr

字符串匹配算法

旧时模样 提交于 2019-12-02 23:37:43
问题大致含义:给出两个字符串s1、s2,判断s2是否为s1的子串。 普通匹配算法: 用两个下标i,j来记录s1和s2当前元素的下标,初始值都为0; 还需要一个index记录s1匹配的起始坐标。 结束条件:i=len(s1) or j=len(s2) ; 如果j=len(s2),那么匹配成功; 否则,匹配失败。 迭代过程: s1[i]=s2[j],则i++ , j++; 如果不相等,那么j=0;index++; i=index; 时间复杂度:O(mn),m,n是两个串的长度。 1 /* 字符串下标始于 0 */ 2 int NaiveStringSearch(string S, string P) 3 { 4 int i = 0; // S 的下标 5 int j = 0; // P 的下标 6 int s_len = S.size(); 7 int p_len = P.size(); 8 9 while (i < s_len && j < p_len) 10 { 11 if (S[i] == P[j]) // 若相等,都前进一步 12 { 13 i++; 14 j++; 15 } 16 else // 不相等 17 { 18 i = i - j + 1; 19 j = 0; 20 } 21 } 22 23 if (j == p_len) // 匹配成功 24 return i -

HDU6543 Can you raed it croretcly? 2019CCPC湖南全国邀请赛(广东省赛、江苏省赛)重现赛

匿名 (未验证) 提交于 2019-12-02 23:34:01
版权声明:抱最大的希望,为最大的努力,做最坏的打算。 https://blog.csdn.net/qq_37748451/article/details/90368411 分析:签到 #include<bits/stdc++.h> #define ll long long #define inf 0x3f3f3f3f #define rep(i,a,b) for(register int i=(a);i<=(b);i++) #define dep(i,a,b) for(register int i=(a);i>=(b);i--) using namespace std; const int maxn=2e5+5; //const double pi=acos(-1.0); //const double eps=1e-9; //const ll mo=1e9+7; int n,m,k; int a[maxn],c[maxn]; int ans,tmp,cnt; int flag; char s[maxn],ss[maxn]; bool ok[maxn]; string s1,s2; int main() { int T,cas=1; //scanf("%d",&T); while(scanf("%s%s",s,ss)!=EOF) { s1=s;s2=ss; int l1=s1

pythonday3

匿名 (未验证) 提交于 2019-12-02 22:56:40
一,编码   1.最早计算机编码为ASCII,美国人创造的,128个码位,2**7,在此基础上加了一位,2**8,包含英文字母(大小写),数字,标点等特殊字符,首位0    一个ASCII码为8位,一个字节.   5.单位换算:8bit = 1byte  1024byte = 1kb  1024kb = 1mb  1024mb = 1gb         1024gb = 1tb  1024tb = 1pb 二,基本数据类型  1,   1> int ==> 整数. 主要用来进行数学运算   2>str ==> 字符串串, 可以保存少量量数据并进?行行相应的操作   3> bool==>判断真假, True, False   4>list==> 存储大量量数据.用[ ]表示   5> tuple=> 元组, 不可以发生改变 用( )表示   6>dict==> 字典, 保存键值对, 一样可以保存大量量数据   7>set==> 集合, 保存大量量数据. 不可以重复. 其实就是不保存value的dict   在python3中所有的整数都是int类型. 但在python2中如果数据量量比较?大. 会使?用long类型.   在python3中不存在long类型   转换问题:  4,字符串(str)   0123456 7 8   s1 = "python牛B"   print(s1

Python数据分析-&gt;pandas玩转excel-&gt; (1)如何利用pandas创建【行,列,单元格】

匿名 (未验证) 提交于 2019-12-02 22:51:30
import pandas as pd #------新建单元格的方法一:通过先创建字典的形式 #可以先新建一个字典 d={'x':100,'y':200,'z':300} #打印字典的索引 print(d.keys()) #打印某个索引对应的value print(d['x']) #将字典d传给Series s1=pd.Series(d) print (s1) #------新建单元格的方法二:分别定义Series的索引和值 L1=[100,200,300] L2=['x','y','z'] s1=pd.Series(L1,index=L2) print(s1) s1=pd.Series([100,200,300],index=['x','y','z']) print (s1) #-----正式建立一个data表格,赋值:value,行,列 s1=pd.Series([1,2,3],index=[1,2,3],name='A') s2=pd.Series([10,20,30],index=[1,2,3],name='B') s3=pd.Series([100,200,300],index=[1,2,3],name='C') df=pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3}) print (df) 来源:博客园 作者: 鑫淼森

动态规划——扰乱字符串问题

Deadly 提交于 2019-12-02 12:45:42
给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。 下图是字符串 s1 = “great” 的一种可能的表示形式。 在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点,然后交换它的两个子节点。 例如,如果我们挑选非叶节点 “gr” ,交换它的两个子节点,将会产生扰乱字符串 “rgeat” 。 我们将 "rgeat” 称作 “great” 的一个扰乱字符串。 同样地,如果我们继续交换节点 “eat” 和 “at” 的子节点,将会产生另一个新的扰乱字符串 “rgtae” 。 我们将 "rgtae” 称作 “great” 的一个扰乱字符串。 给出两个长度相等的字符串 s1 和 s2,判断 s2 是否是 s1 的扰乱字符串。 示例 1: 输入: s1 = “great”, s2 = “rgeat” 输出: true 示例 2: 输入: s1 = “abcde”, s2 = “caebd” 输出: false 题目详细解析 来源: https://blog.csdn.net/qq_39690007/article/details/102761456

机房测试模拟2:模拟+数学+数位dp

旧巷老猫 提交于 2019-12-02 06:50:55
T1: 分析: 画图模拟,发现折叠后的长度会变成折叠位置左右两部分取max,难点在于:折叠后找不到对应的点在哪个位置。 因为n很大,但其实很多位置都是用不到的,所以处理m个操作。 一次操作后,可能会影响到后面的所有操作的位置,于是将操作离线,一次操作后将后面所有将要用到的操作位置都更新。 怎么更新? 例如:1 2 3 4 5 6 7 8 现在折3,下一步折8,8应该变成abs(3-8)=5 因为相当于将节点重新标号了: 1 2 3 4 5 6 7 8 / / 0 1 2 3 4 5(被翻过的位置不会再有了) 然后长度又被更新成:len=max(len-a[i],a[i]) (相比起来这种神奇又巧妙的方法 ssw的模拟 好理解多了) #include<bits/stdc++.h> using namespace std; #define ll long long #define ri register int #define N 3005 ll a[N]; int main() { freopen("fold.in","r",stdin); freopen("fold.out","w",stdout); ll n; int m; scanf("%lld%d",&n,&m); ll len=n; for(ri i=1;i<=m;++i) scanf("%lld",&a[i]); for

C 字符串

痞子三分冷 提交于 2019-12-02 00:29:19
参考链接: https://www.runoob.com/cprogramming/c-strings.html 字符串其实就是以null字符 \0 终止的一个 字符数组 C编译器会在初始化字符数组时,自动把 \0 放在字符串的末尾 操作字符串的函数 名称 描述 strcpy(s1,s2) 将s1复制到s2 strcat(s1,s2) 将s2连接到s1的末尾 strlen(s1) strmp(s1,s2) 比较是否相同 strchr(s1,char) 返回s1中char第一次出现的位置 strstr(s1,s2) 返回 来源: https://www.cnblogs.com/Gaoqiking/p/11723139.html

蠡口87. Scramble String

旧时模样 提交于 2019-12-01 18:21:08
看到2叉数,想到两组算法:DFS和分治。本题使用分治,答案来自大神basketwang的YouTube解答( https://www.youtube.com/watch?v=Lq3Kr7-qXGI )。希望有一天自己也能独立想出来。 废话不多说,思路是这样: 若S 1 和S 2 互为scramble string <=> 存在下标idx,使得下图的两种情况之一成立。 为了证明上述命题成立。先定义"a ~ b"表示a与b互为scrabled string,a可以通过一些旋转变成b(通过二叉树的旋转)。 <=, 右推左):   其实等价于(a 1 ~ b 1 且a 2 ~ b 2 ) 或者 (a 1 ~ b 2 且a 2 ~ b 1 ) => a 1 +a 2 ~ b 1 +b 2   Case I: 若a 1 ~ b 1 且a 2 ~ b 2 ,那么对于a 1 +a 2 -> 把整个字符分成a 1 和a 2 -> 先将a 1 变成b 1 ,再将a 2 变成b 2 -> 连接a 1 和a 2 变换后的string -> b 1 +b 2   Case II: 若a 1 ~ b 2 且a 2 ~ b 1 ,那么对于a 1 +a 2 -> 把整个字符分成a 1 和a 2 -> 先将a 1 变成b 2 ,再将a 2 变成b 1 -> 对换a 1 和a 2 变换后的string再连接 -> b