Untitled

 avatar
unknown
plain_text
4 years ago
3.0 kB
5
Indexable
#include <stdio.h>
#include <string.h>

char S[3005];
char P[3005];
int A[30]={0};
char B[3005][3005];
int C[30]={0};
char D[3005][3005];
int E[3005]={0};
int F[3005]={0};
int hell[3005]={0};
void bubblesort (int n);
int N=0,r=0;

int main(void){
    int s=0,a=0,c=0,m=0,b=0;
    
    scanf("%s",S);
    scanf("%d",&N);
    scanf("%s",P);
    s=strlen(S);

    
    for(int i=0;i<N;i++){
        A[(int)(P[i]-'0')-48]++;
    }
    for(int i=0;i<s-N+1;i++){
        for(int j=0;j<N;j++){
            C[(int)(S[i+j]-'0')-48]++;
        }
        for(int j=1;j<27;j++){
            if(A[j]!=C[j]){
                break;
            }
            if(j==26){
                for(int k=0;k<N;k++){
                   B[a][k]=S[i+k];
                }
                a++;
            }
        }
        for(int j=0;j<30;j++){
            C[j]=0;
        }
    }
    for(int i=0;i<a;i++){
        for(int j=0;j<c;j++){
            for(int k=0;k<N;k++){
                if(D[j][k]==B[i][k]){
                    F[j]++;
                }
            }
        }
        for(int j=0;j<c;j++){
            if(F[j]==N){
                m=1;
                b=j;
            }
        }
        for(int j=0;j<c;j++){
            F[j]=0;
        }
        if(m!=1){
            for(int w=0;w<N;w++){
                D[c][w]=B[i][w];
            }
            E[c]++; 
            c++;
        }
        else if(m==1){
            E[b]++;      
        }
        m=0;
    }
    bubblesort (c);
    //bubblesortt (c);
    printf("%d\n",c);
    for(int i=0;i<c;i++){
        /*for(int j=0;j<N;j++){
            printf("[%d][%d]:%c",i,j,B[i][j]);
        }*/
        printf("%s %d\n",D[i],E[i]);
    }
    return 0;
}

void bubblesort (int n) {
      int i, j,m;
      char temp;
      for (i = 0; i < n-1; i++) {
            for (j = 0; j < n-1-i; j++) {
                if (E[j] < E[j + 1]) {
                    for(int v=0;v<N;v++){
                        temp=D[j][v];
                        D[j][v]=D[j + 1][v];
                        D[j+1][v] =temp;
                    }
                    m=E[j];
                    E[j]=E[j+1];
                    E[j+1]=m; 
                }
                else if(E[j]==E[j+1]){        
                    for(int k=0;k<N;k++){
                        if (D[j][k] > D[j + 1][k]) {
                            for(int v=0;v<N;v++){
                                temp=D[j][v];
                                D[j][v]=D[j + 1][v];
                                D[j+1][v] =temp;
                            }
                            m=E[j];
                            E[j]=E[j+1];
                            E[j+1]=m;
                            break;          
                        }
                        else if(D[j][k]<D[j+1][k]){
                              break;
                        }
                    }
                }
            }
      }
}
Editor is loading...