zoukankan      html  css  js  c++  java
  • 子串计算

    题目链接:http://noi.openjudge.cn/ch0201/2472/
    总时间限制: 1000ms 内存限制: 65536kB
    描述

    给出一个只包含0和1的字符串(长度在1到100之间),求其每一个子串出现的次数。

    输入
    一行,一个01字符串。
    输出
    对所有出现次数在1次以上的子串,输出该子串及出现次数,中间用单个空格隔开。按子串的字典序从小到大依次输出,每行一个。
    样例输入
    10101
    样例输出
    0 2
    01 2
    1 3
    10 2
    101 2
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 
     5 struct obj
     6 {
     7     char str[105];
     8     int count;
     9 };
    10 
    11 void fun(char temp[]);
    12 int cmp(const void *a,const void *b);
    13 
    14 struct obj b[60000];
    15 int indexOfBArr=0; //b[]的下标,indexOfBArr表示b[]真正使用的行数
    16 
    17 int main(int argc, char *argv[])
    18 {
    19     char a[105],temp[105];
    20     int i,j,len,k,t;
    21 
    22     scanf("%s",a);
    23     len=strlen(a);
    24 
    25     //枚举所有子串
    26     for(i=0;i<len;i++)//枚举子串的开始点
    27     {
    28         k=0;
    29         for(j=i;j<len;j++)//枚举子串的结束点
    30         {
    31             temp[k]=a[j];
    32             k++;
    33             temp[k]='';
    34             fun(temp);//扫描b[]的每一行对应的子串,检验是否已经保存temp[]这个子串。
    35         }
    36     }
    37 
    38     qsort(b,indexOfBArr,sizeof(b[0]),cmp);
    39 
    40     for(i=0;i<indexOfBArr;i++)
    41     {
    42         if(b[i].count>1)
    43             printf("%s %d
    ",b[i].str,b[i].count);
    44     }/**/
    45 
    46 
    47     return 0;
    48 }
    49 void fun(char temp[])//扫描b[]的每一行对应的子串,检验是否已经保存temp[]这个子串。
    50 {
    51     int i;
    52     if(indexOfBArr==0) { strcpy(b[0].str,temp);  b[0].count=1; indexOfBArr++; return;}
    53     for(i=0;i<indexOfBArr;i++)
    54     {
    55         if(strcmp(b[i].str,temp)==0) { b[i].count++; return; }
    56     }
    57 
    58     strcpy(b[indexOfBArr].str,temp);
    59     b[indexOfBArr].count=1;
    60     indexOfBArr++;
    61 }
    62 int cmp(const void *a,const void *b)
    63 {
    64     struct obj x,y;
    65     x=*(struct obj *)a;
    66     y=*(struct obj *)b;
    67     return strcmp(x.str,y.str);
    68 }





  • 相关阅读:
    ios界面布局整理
    android ProGuard 代码混淆实现
    mac版 android破解软件下载安装
    在unix系统下的 .o文件 .a文件 .so文件说明和相互关系
    android中的广播接收实现总结
    用java的jdk 生成android 的jni接口文档
    Android 自定义Application
    android项目中配置NDK自动编译生成so文件
    创建android Notification
    (ios) nsnotification总结
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/8393753.html
Copyright © 2011-2022 走看看