zoukankan      html  css  js  c++  java
  • 成长轨迹47 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2820:古代密码】

    题目http://poj.grids.cn/practice/2820

    wa的原因估计是替换那里,有可能不是顺序替换,而是乱序替换。。

    【wa代码】

    View Code
     1 #include <stdio.h>
    2 #include <string.h>
    3 #include <ctype.h>
    4 #include <cmath>
    5 void sort(char * s,int leng)
    6 {
    7 for(int i=0;i<leng-1;i++)
    8 {
    9 for(int j=i+1;j<leng;j++)
    10 {
    11 if(s[i]>s[j])
    12 {
    13 char temp=s[i];
    14 s[i]=s[j];
    15 s[j]=temp;
    16 }
    17 }
    18 }
    19 }
    20
    21 char pre[150],late[150];
    22 char pre1[150],late1[150];
    23 int main()
    24 {
    25 memset(pre,0,sizeof(pre));
    26 memset(late,0,sizeof(late));
    27 scanf("%s",pre);
    28 scanf("%s",late);
    29
    30 int n = strlen(pre);
    31 int m = strlen(late);
    32 if(n!=m)
    33 {
    34 printf("No\n");
    35 return 0;
    36 }
    37
    38
    39 int delta = (late[0]-pre[0])%26;
    40 if(delta<0)
    41 delta=-delta;
    42
    43 for(int d=0;d<26;d++)
    44 {
    45 memset(pre1,0,sizeof(pre1));
    46 memset(late1,0,sizeof(late1));
    47 strcpy(pre1,pre);
    48 strcpy(late1,late);
    49 for(int i=0;i<n;i++)
    50 {
    51 int delta = (late1[i]-'A'+d)%26;
    52 late1[i]=('A'+delta);
    53 }
    54 sort(pre1,n);//排序之后再检查就知道是不是经过交换处理
    55 sort(late1,m);
    56
    57
    58 if(strcmp(pre1,late1)==0)
    59 {
    60 printf("Yes\n");
    61 return 0;
    62 }
    63 }
    64 printf("No\n");
    65
    66 return 0;}

    【ac代码】

     1 #include <stdio.h>   
    2 #include <stdlib.h>
    3 #include <string.h>
    4
    5 int compare(const void * elem1 , const void * elem2)
    6 {
    7 return (strcmp((char *)elem1, (char *)elem2));
    8 }
    9
    10 int main(int argc, char *argv[])
    11 {
    12 char s[101],d[101];
    13 int sp[27],dp[27];
    14 int i;
    15
    16 for( i = 0 ; i < 26 ; i++ )
    17 sp[i] = dp[i] = 0 ;
    18 scanf("%s",d);
    19 scanf("%s",s);
    20 for( i = 0 ; d[i]!='\0' ; i++ )
    21 dp[d[i]-'A']++;
    22 for( i = 0 ; s[i]!='\0' ; i++ )
    23 sp[s[i]-'A']++;
    24 qsort(dp , 26 , sizeof(int) , compare);
    25 qsort(sp , 26 , sizeof(int) , compare);
    26 for( i = 0 ; i < 26 ; i++ )
    27 {
    28 if( dp[i]!=sp[i] )break;
    29 }
    30 if(i==26)printf("YES\n");
    31 else printf("NO\n");
    32
    33 return 0;
    34 }
  • 相关阅读:
    [OrangePi] Installation on SD Card
    网线直连笔记本玩树莓派
    vim多行缩进的方法
    对linux的根目录执行强制递归移除
    windows下快速启动 nginx 和 php-cgi 的两个批处理
    windows下nginx和php环境的配置
    c语言对文件操作完成后尽量手动关闭
    [记录]使用openGL显示点云的一个程序
    linux中使用软链接时出现 too many levels of symbolic links
    使用 nano 的时候提示找不到 libncursesw.so.5 这个共享库
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2352409.html
Copyright © 2011-2022 走看看