zoukankan      html  css  js  c++  java
  • NOIP2016提高组初赛(2)四、阅读程序写结果2、

     #include <iostream>
    using namespace std;
    int main() {
    char a[100][100], b[100][100];
    string c[100];
    string tmp;
    int n, i = 0, j = 0, k = 0, total_len[100], length[100][3];
    cin >> n;
    getline(cin, tmp);//what?我也不懂这个tmp有什么用
    for (i = 0; i < n; i++) {
    getline(cin, c[i]);
    total_len[i] = c[i].size();//记录c[i]的长度
    }
    for (i = 0; i < n; i++) {
    j = 0;
    while (c[i][j] != ':') {//c[i][j]是string变量的一种表达,表示字符串c[i]的第j个字符
    a[i][k] = c[i][j];//扫描c[i],当c[i]的第j个字符不为":"时,将c[i]的字符存入a[i][k]中,即把c[i]字符串":"前的所有字符存入a[i][k]中
    k = k + 1;//如果满足c[i][j]的第j个字符不为":",就可以做到将c[i][0]-->c[i][j]中的字符存入a[i][0]-->a[i][k](k==j)中
    j++;
    }
    length[i][1] = k - 1;//记录":"前的字符的个数
    a[i][k] = 0;//记录":"所在的位置
    k = 0;
    for (j = j + 1; j < total_len[i]; j++) {//由于j是扫描到":"后的值再+1,所以此时的c[i][j]为":"后输入的字符
    b[i][k] = c[i][j];//扫描":"后的所有字符,将其存入b[][]中
    k = k + 1;
    }
    length[i][2] = k - 1;//记录":"后的字符的个数
    b[i][k] = 0;//记录终点位置
    k = 0;
    }
    for (i = 0; i < n; i++) {
    if (length[i][1] >= length[i][2])//如果":"前的字符比":"后的字符个数多
    cout << "NO,";//输出"NO"
    else {
    k = 0;
    for (j = 0; j < length[i][2]; j++) {//找":"后的字符
    if (a[i][k] == b[i][j])//如果":"前的字符在":"后有出现
    k = k + 1;//找下一个":"前的符是否有出现(不从头找而是从当前位置往后找)
    if (k > length[i][1])//如果k的值比":"前的字符长度大,即已经找完了":"前的所有字符,那么退出循环
    break;
    }
    if (j == length[i][2])//如果j的值和":"后的字符串长度相等,即在扫描到最后一个点时,无论":"前的字符是否被找完,都输出"NO,"
    cout << "NO,";
    else
    cout << "YES,";//如果在找完字符串之前已经找到了":"前的字符,那么输出"YES,"
    }
    }
    cout << endl;
    return 0;
    }

    输入:3
    AB:ACDEbFBkBD
    AR:ACDBrT
    SARS:Severe Atypical Respiratory Syndrome
    输出:
    _________
    (注:输入各行前后均无空格)

     

     

      本人后来在编译器上模拟了一遍,发现"AB:AB"这样的输入会输出"NO",才发现这个程序原来还有这个小细节(虽然不会影响考试),这道题一开始做的时候感觉很痛苦(因为在试卷上是分页的......),但后来放在一起看发现还挺简单的。。。。。。

    几个细节要注意:

      一是注意它输出的是"YES,"和"NO,",注意不要引发一场关于逗号的血案......

      二是本蒟蒻才知道原来string定义的变量是可以用c[i][j]这样的形式表示字符串c[i]的第j个变量,感觉和vector差不多

      具体做法的话应该就是自己跑一遍程序   orz

  • 相关阅读:
    break return continue
    爬虫---请求
    pycharm加开头注释
    爬虫---入门
    pip
    XML基础
    英语
    布局
    adobe
    StackOverflow
  • 原文地址:https://www.cnblogs.com/pirote-zjy/p/7647648.html
Copyright © 2011-2022 走看看