#1147. [CSP2022 提高级] 第 16 题

[CSP2022 提高级] 第 16 题

二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,错误填×;除特殊说明外,判断题 1.51.5 分,选择题 33 分,共计 4040 分)

(1)

 #include <iostream> 
 #include <string> 
 #include <vector> 
 
 using namespace std; 
 
 int f(const string &s, const string &t) 
 { 
     int n = s.length(), m = t.length(); 

    vector<int> shift(128, m + 1); 

    int i, j;

    for (j = 0; j < m; j++)
        shift[t[j]] = m - j;

    for (i =0; i<= n - m; i += shift[s[i + m]]){
        j =0;
        while(j < m && s[i +j] == t[j]) j++;
        if (j == m) return i;
    }

    return -1;
}

int main()
{
    string a ,b;
    cin >> a >> b;
    cout << f(a, b) << endl;
    return 0;
}

假设输入字符串由 ASCII 可见字符组成,完成下面的判断题和单选题:

判断题

11 分)当输入为“abcde fg”时,输出为 -1

{{ select(1) }}

  • 正确
  • 错误