zoukankan      html  css  js  c++  java
  • 成长轨迹45 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2797:最短前缀】

    http://poj.grids.cn/practice/2797
     
    【wa代码】

     1 #include <stdio.h>
    2 #include <string.h>
    3 #include <ctype.h>
    4 #include <cmath>
    5
    6 char ori[10050][22],pre[10050][22];
    7
    8 int main()
    9 {
    10 int n;
    11 for(int i=0;i<10050;i++)
    12 {
    13 memset(ori[i],0,sizeof(ori[i]));
    14 memset(pre[i],0,sizeof(pre[i]));
    15 }
    16 for(n=0;scanf("%s",ori[n])!=EOF;n++);
    17
    18 for(int i=0;i<n;i++)
    19 {
    20 int len=strlen(ori[i]);
    21 for(int j=0;j<len;j++)
    22 {
    23 bool ok=true;
    24 for(int k=i+1;k<n;k++)
    25 if(strcmp(pre[i],pre[k])==0)//如果子串相同
    26 {
    27 ok=false;
    28 if(strcmp(pre[k],ori[k])!=0)//如果k的子串不是它的全串
    29 pre[k][j]=ori[k][j];
    30 }
    31 if(ok)
    32 break;
    33 pre[i][j]=ori[i][j];
    34 }
    35 }
    36 for(int i=0;i<n;i++)
    37 {
    38 printf("%s %s\n",ori[i],pre[i]);
    39 }
    40
    41 return 0;}



    【ac代码】

     1 #include <stdio.h>
    2 #include <string.h>
    3 #include <ctype.h>
    4 #include <cmath>
    5
    6 char ori[10050][22],pre[10050][22];
    7
    8 int main()
    9 {
    10 int n;
    11 for(int i=0;i<10050;i++)
    12 {
    13 memset(ori[i],0,sizeof(ori[i]));
    14 memset(pre[i],0,sizeof(pre[i]));
    15 }
    16 for(n=0;scanf("%s",ori[n])!=EOF;n++);
    17
    18 for(int i=0;i<n;i++)
    19 {
    20 int len=strlen(ori[i]);
    21 /*
    22 【j==len就跳出的话,可能后面有跟它相同子串的还没有改,
    23 所以必须只能在ok==true时跳出】
    24 */
    25 for(int j=0;;j++)
    26 {
    27 bool ok=true;
    28 for(int k=i+1;k<n;k++)
    29 if(strcmp(pre[i],pre[k])==0)//如果子串相同
    30 {
    31 ok=false;
    32 if(strcmp(pre[k],ori[k])!=0)//如果k的子串不是它的全串
    33 pre[k][j]=ori[k][j];
    34 }
    35 if(ok)
    36 break;
    37 if(strcmp(pre[i],ori[i])!=0)
    38 pre[i][j]=ori[i][j];
    39 }
    40 }
    41 for(int i=0;i<n;i++)
    42 {
    43 printf("%s %s\n",ori[i],pre[i]);
    44 }
    45
    46 return 0;}



    【标程】

     1 #include <stdio.h>   
    2 #include <string>
    3 #include <string.h>
    4 #include <vector>
    5 #include <list>
    6 #include <math.h>
    7 #include <algorithm>
    8
    9 using namespace std;
    10
    11 int main()
    12 {
    13 char dic[1001][21], subStr[21],tmp[21];
    14
    15 int i, j, p, k;
    16
    17 memset( dic , 0 , sizeof(char)*1001*21 );
    18 memset( subStr , 0 , sizeof(char)*21 );
    19 memset( tmp , 0 , sizeof(char)*21 );
    20
    21 k = 0 ;
    22 while( EOF != scanf("%s",dic[k]) ) k++;
    23
    24 for( i = 0 ; i < k ; i++ )
    25 {
    26 for( j = 1 ; j <= strlen(dic[i]) ; j++ )
    27 {
    28 strncpy( subStr , dic[i] , j );
    29 for( p = 0 ; p < k ; p++ )
    30 {
    31 if( p != i )
    32 {
    33 strncpy ( tmp , dic[p] , j );
    34 if( strcmp(tmp,subStr) == 0 ) break ;
    35 }
    36 }
    37 if( p < k )continue;
    38 if( p == k )break;
    39 }
    40 printf("%s %s\n",dic[i],subStr);
    41 memset( subStr , 0 , sizeof(char)*21 );
    42 memset( tmp , 0 , sizeof(char)*21 );
    43 }
    44
    45 return 1;
    46 }
  • 相关阅读:
    20180925-7 规格说明书-吉林市2日游
    第二周例行报告psp
    20180918-1 词频统计
    第一周例行报告psp
    第一周博客作业2018091-2
    20181009-9 每周例行报告
    20180925-1 每周例行报告
    20180925-7 规格说明书-吉林市2日游
    20180925-5 代码规范,结对要求
    20180925-4 单元测试,结对
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2347780.html
Copyright © 2011-2022 走看看