1077. Kuchiguse (20)

题目链接:http://www.patest.cn/contests/pat-a-practise/1077
题目:

The Japanese language is notorious for its sentence ending particles. Personal preference of such particles can be considered as a reflection of the speaker's personality. Such a preference is called "Kuchiguse" and is often exaggerated artistically in Anime and Manga. For example, the artificial sentence ending particle "nyan~" is often used as a stereotype for characters with a cat-like personality:

  • Itai nyan~ (It hurts, nyan~)
  • Ninjin wa iyada nyan~ (I hate carrots, nyan~)

    Now given a few lines spoken by the same character, can you find her Kuchiguse?

    Input Specification:

    Each input file contains one test case. For each case, the first line is an integer N (2<=N<=100). Following are N file lines of 0~256 (inclusive) characters in length, each representing a character's spoken line. The spoken lines are case sensitive.

    Output Specification:

    For each test case, print in one line the kuchiguse of the character, i.e., the longest common suffix of all N lines. If there is no such suffix, write "nai".

    Sample Input 1:
    3
    Itai nyan~
    Ninjin wa iyadanyan~
    uhhh nyan~
    
    Sample Output 1:
    nyan~
    
    Sample Input 2:
    3
    Itai!
    Ninjinnwaiyada T_T
    T_T
    
    Sample Output 2:
    nai

  • 分析:
    AC代码:
    #include<stdio.h>
    #include<string.h>
    #include<string>
    #include<vector>
    using namespace std;
    char line[256];
    vector<string>V;
    int main(void){
     //freopen("F://Temp/input.txt", "r", stdin);
     int k;
     while (scanf("%d", &k) != EOF){
      V.clear();
      getchar();
      for (int i = 0; i < k; i++){
       gets(line);
       V.push_back(line);
      }
      int min  = 300;
      for (int i = 0; i < k - 1; i++){
       string s1 = V[i];
       string s2 = V[i + 1];
       int count = 0;
       for (int n1 = s1.size(), n2 = s2.size(); n1 > 0 && n2 > 0; n1 --, n2--){
        if (s1[n1 - 1] == s2[n2 - 1])count++;
        else break;
       }
       if (count < min)min = count;
      }
      if (min != 0){
       string s = V[0];
       for (int i = s.size() - min; i <= s.size() - 1; i++){
        printf("%c", s[i]);
       }
       printf("\n");
      }
      else{
       puts("nai");
      }
     }
     return 0;
    }


    截图:
    1077. Kuchiguse (20)_第1张图片
    ——Apie陈小旭

    你可能感兴趣的:(1077. Kuchiguse (20))