子串计算
- 题目链接: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]='\0'; 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\n",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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App