@yudesong
2017-06-24T15:54:39.000000Z
字数 1418
阅读 546
字符串
#include <iostream>#include<string.h>using namespace std;//字符串匹配算法int BFMatch(char *p,char *q){int i=0,j;while(i<strlen(p)){j = 0;while(p[i]==q[j] && j<strlen(q)){i++;j++;}if(j==strlen(q))return i-strlen(q);i=i-j+1;}return -1;}int BF(char *p,char *q){int i=0,j=0;while(i<strlen(p) && j<strlen(q)){if(p[i]==q[j]){i++;j++;}else{i=i-j+1;j=0;}}if(j==strlen(q)) return i-strlen(q);return -1;}void getNext(char *p,int next[]){next[0]=-1;int j=0,k=-1;while(j<strlen(p)){if(k==-1 || p[j]==p[k]){j++;k++;next[j]=k;}else k=next[k];}}int KMP(char *p,char *q){int i=0,j=0;int next[20];getNext(q,next);while(i<strlen(p) && j<strlen(q)){if(p[i]==q[j]){i++;j++;}else j=next[j];}if(j==strlen(q)) return i-strlen(q);return -1;}int main(){char *p="ababcababa";char *q="abc";cout<<KMP(p,q)<<endl;return 0;}
void func(int num1[N][N],int num2[N][N],int s[N][N]){int i,j,k;for(i=0;i<N;i++)for(j=0;j<N;j++){for(k=0;k<N;k++)s[i][j]=s[i][j]+num1[i][k]*num2[k][j];}for(i=0;i<N;i++)for(j=0;j<N;j++)cout<<s[i][j]<<" ";}
#include <stdio.h>#define MAX_SIZE 100void func(int a[MAX_SIZE][MAX_SIZE],int n){int i,j,m,k=0;if(n%2==0) m=n/2;else m=n/2+1;for(i=0;i<m;i++){for(j=i;j<n-i;j++){k++;a[i][j]=k;}for(j=i+1;j<n-i;j++){k++;a[j][n-i-1]=k;}for(j=n-i-2;j>=i;j--){k++;a[n-i-1][j]=k;}for(j=n-i-2;j>=i+1;j--){k++;a[j][i]=k;}}}int main(){int num,i,j;scanf("%d",&num);int a[MAX_SIZE][MAX_SIZE];func(a,num);for(i=0;i<num;i++){for(j=0;j<num;j++) printf("%3d ",a[i][j]);printf("\n");}return 0;}
