摘要: 题意: 给你个n*n 的位图,让你放大k 倍后输出。分析: 最终图案的每一部分都是有原图相应位置扩大而来,可以用递归实现。View Code #include<stdio.h>#include<math.h>#include<string.h>char a[30][30];char v[3005][3005];int n;void dfs(int k,int x,int y){ int tmp,i,j,tot,l; if(k==1) { for(i=x;i<x+n;i++) for(j=y;j<y+n;j++) ... 阅读全文
posted @ 2012-04-26 23:56 'wind 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你两个字符串,让你找出第一个字符串的头部和第二个字符串尾部重合的部分,并尽可能的长,例如 aasdfs bdevaa 答案为 aa 2分析: 利用 KMP 算法得到的 next 函数的特点,把两字符串连到一起,找出头部和尾部重合的部分。View Code #include<stdio.h>#include<string.h>char s1[50005];char s2[50005];int next[100010];int len1,len2,len;void get(){ int i=0,j=-1; next[0]=-1; while(i<len) { 阅读全文
posted @ 2012-04-26 21:21 'wind 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。分析: next 数组的巧用。View Code #include<stdio.h>#include<string.h>int next[100005];char b[100005];int len;void get(){ int i=0,j=-1; next[0]=-1; while(i<len) { if(j==-1||b[i]==b[j]) next[++i]=++j; else j=next[j]; }}int main(){ int ... 阅读全文
posted @ 2012-04-26 20:01 'wind 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题意: 一个字符串,从头到某个位置,字符串的前缀最多重复了多少次。转一相关讲解:kmp next函数 kmp的周期问题,深入了解kmp中next的原理----------------------------------------------k m x j i由上,next【i】=j,两段红色的字符串相等(两个字符串完全相等),s[k....j]==s[m....i]设s[x...j]=s[j....i](xj=ji)则可得,以下简写字符串表达方式kj=kx+xj;mi=mj+ji;因为xj=ji,所以kx=mj,如下图所示------------- -----------... 阅读全文
posted @ 2012-04-26 00:45 'wind 阅读(215) 评论(0) 推荐(0) 编辑