刷清橙OJ--A1096.求子串

来源:互联网 发布:《UNIX环境高级编程》 编辑:程序博客网 时间:2024/06/06 04:55
问题:
A1096. 求子串
时间限制:1.0s   内存限制:256.0MB  
总提交次数:2663   AC次数:1022   平均分:49.17
【问题描述】
   求一个长度为n的字符串中所有长度为k的子字符串,并将所有子串按字典序从小到大输出。
【输入格式】
  输入共2行。
  第一行为字符串,其长度为n(1≤n≤1000),字符串中不包含空格。
  第二行一个整数k,0<k≤min(5, n)。
【输出格式】
  输出共一行。
  按从小到大排列的所有子字符串, 子串之间用空格隔开。
【样例输入】
  HelloWorld
  3
【样例输出】
  Hel Wor ell llo loW oWo orl rld
代码:
#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;char sub[250][1010];char a[1010];int cmp(const void *a,const void *b){return strcmp((char*) a,(char*) b);}int main(){int n,k;int i,j;scanf("%s",a);scanf("%d",&k);n = strlen(a);for(i = 0;i <= n - k;i++){for(j = 0;j < k;j++)sub[i][j] = a[i+j];sub[i][k] = 0;}qsort(sub,n - k + 1,sizeof(sub[0]),cmp);for(i = 0;i <= n - k;i++){printf("%s ",sub[i]);}return 0;}


个人想法:代码来自试题讨论