• poj1107


     

    解题心得:

    1.看清题意是关键;

    2.题目中有很多细节需要注意包括num[i]是否为0,以及转换的长度是否超出三个区间所含字符本身的长度等;

    3.Transfer函数的书写时关键,注意体会。

     

      1 1 #include<stdio.h>  
      2 
      3 2 #include<string.h>  
      4 
      5 3 char s[85],r[85];  
      6 
      7 4 int f[85],a[3],num[3],len;  
      8 
      9 5 int transfer(int c,int k)  
     10 
     11 6 {  
     12 
     13 7     int i,t=0;  
     14 
     15 8     i=c;  
     16 
     17 9     while(t!=k)  
     18 
     19 10     {  
     20 
     21 11         i++;  
     22 
     23 12         if(i>len-1)  
     24 
     25 13         i=0;  
     26 
     27 14         if(f[i]==f[c])  
     28 
     29 15         t++;  
     30 
     31 16     }  
     32 
     33 17     r[i]=s[c];  
     34 
     35 18     return 0;  
     36 
     37 19 }  
     38 
     39 20 //转换字符采用的方式是把所有需要转换的数据按规定右移固定单位,如果所需要右移的单位超出本身的长度则重新从头开始查找,直到可以完成转换。
     40 
     41 21 int main()  
     42 
     43 22 {  
     44 
     45 23     while(scanf("%d%d%d",&a[0],&a[1],&a[2])==3)  
     46 
     47 24     {  
     48 
     49 25         if(a[0]==0&&a[1]==0&&a[2]==0)  
     50 
     51 26         break;  
     52 
     53 27         getchar();  
     54 
     55 28         memset(f,0,sizeof(f));  
     56 
     57 29         gets(s);  
     58 
     59 30         int i;  
     60 
     61 31         len=strlen(s);  
     62 
     63 32         num[0]=num[1]=num[2]=0;  
     64 
     65 33         for(i=0;i<len;i++)  
     66 
     67 34         {  
     68 
     69 35             if(s[i]>='a'&&s[i]<='i')  
     70 
     71 36             {  
     72 
     73 37                 f[i]=1;  
     74 
     75 38                 num[0]++;  
     76 
     77 39             }  
     78 
     79 40             else if(s[i]>='j'&&s[i]<='r')  
     80 
     81 41             {  
     82 
     83 42                 f[i]=2;  
     84 
     85 43                 num[1]++;  
     86 
     87 44             }  
     88 
     89 45             else  
     90 
     91 46             {  
     92 
     93 47                 f[i]=3;  
     94 
     95 48                 num[2]++;  
     96 
     97 49             }  
     98 
     99 50         }  
    100 
    101 51         ///注意num[i]为0的情况   
    102 
    103 52         for(i=0;i<len;i++)  
    104 
    105 53         {  
    106 
    107 54             if(f[i]==1)  
    108 
    109 55             {  
    110 
    111 56                 if(num[0])  
    112 
    113 57                 transfer(i,a[0]%num[0]);  
    114 
    115 58             }  
    116 
    117 59             else if(f[i]==2)  
    118 
    119 60             {  
    120 
    121 61                 if(num[1])  
    122 
    123 62                 transfer(i,a[1]%num[1]);  
    124 
    125 63             }  
    126 
    127 64               
    128 
    129 65             else  
    130 
    131 66             {  
    132 
    133 67                 if(num[2])  
    134 
    135 68                 transfer(i,a[2]%num[2]);  
    136 
    137 69             }  
    138 
    139 70         }  
    140 
    141 71         r[len]='/0';  
    142 
    143 72         puts(r);  
    144 
    145 73     }  
    146 
    147 74 }  

     

     

  • 相关阅读:
    找水王
    第十四周学习记录
    第十三周学习记录
    第十二周学习记录
    序列化
    哪个元素出发事件
    阻止默认行为-event.preventDefault();
    阻止时间冒泡 -event.stopPropagation();
    HTML5的LocalStorage和sessionStorage的使用 -缓存
    同步加载、异步加载、延迟加载
  • 原文地址:https://www.cnblogs.com/khbcsu/p/3852715.html
Copyright © 2020-2023  润新知