用php做网站和go做网站,淄博微信小程序代理,网络营销培训机构,wordpress父网页题干#xff1a;
一块花布条#xff0c;里面有些图案#xff0c;另有一块直接可用的小饰条#xff0c;里面也有一些图案。对于给定的花布条和小饰条#xff0c;计算一下能从花布条中尽可能剪出几块小饰条来呢#xff1f;
Input输入中含有一些数据#xff0c;分别是成…题干
一块花布条里面有些图案另有一块直接可用的小饰条里面也有一些图案。对于给定的花布条和小饰条计算一下能从花布条中尽可能剪出几块小饰条来呢
Input输入中含有一些数据分别是成对出现的花布条和小饰条其布条都是用可见ASCII字符表示的可见的ASCII字符有多少个布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符则不再进行工作。 Output输出能从花纹布中剪出的最多小饰条个数如果一块都没有那就老老实实输出0每个结果之间应换行。 Sample Input
abcde a3
aaaaaa aa
#
Sample Output
0
3 解题报告 从i开始的不成立必须从i1开始不能从不成立的那个点开始虽然也能水过但是显然那样是不对的。
ac代码模拟
#includeiostream
#includecstring
#includecstdio
using namespace std;char a[1000 5];
char b[1000 5];
int main()
{int lena,lenb;while(scanf(%s,a)) {if(a[0]#) break;scanf(%s,b);lenastrlen(a);lenbstrlen(b);int cnt0;int x0,y0;//x-a y-bwhile(xlena) {if(a[x]b[y]) {x;y;if(ylenb) {cnt;y0;}}else {xx-y1;y0; } }printf(%d\n,cnt); }return 0 ;
}
ac代码2KMP
稍后帖已补
#includecstdio
#includecstring
#define ll long long
using namespace std;
char s[1000005];
char t[1000005];
int next[1000005];
int len1,len2;
void getnext() {int j 0,k -1;next[0] -1;while(jlen2-1) {if(k -1 || t[j] t[k]) {j,k;next[j] k;}else k next[k];}
}
int kmp() {int cnt 0;int i0,j0;while(i len1) {if(j -1 || s[i] t[j]) {i,j;}else {jnext[j];}if(j len2) {cnt;j0;}}return cnt;}
int main()
{while(~scanf(%s,s)) {if(s[0] #) break;scanf(%s,t);len1 strlen(s);len2 strlen(t);getnext();printf(%d\n,kmp());}return 0;
}总结
今天是2018.10.22时隔三个月我终于是来补上这篇KMP的代码了。感慨万千啊原来三个月前的我还是只会写暴力代码格式十分丑陋的小渣渣一暑假的熏陶真的是看到了自己的变化。应了学长那句话啊暑假留校的时光必定会是你进步最快的两个月感谢经历祝自己越来越好。
另可以看看自己对KMP模板总结的那个博客想想如果从1开始读入字符串的话应该怎么写。博客链接