此代码应采用两个字符串作为输入。这些字符串只有字母字符(a-z& A-Z),但它给了我“用信号11杀死执行(可以通过违反内存限制来触发)”。但我不明白为什么因为我使用两个数组汽车和carQ来存储有关字母字符charachters的信息,通过做汽车[char-'A']并且这个索引总是大于或等于零且小于60。你有什么想法吗?
#include <iostream>
#include <algorithm>
#include <math.h>
#include <vector>
#include <string>
#include <utility>
#include <stdio.h>
#include <queue>
#include <fstream>
#include <functional>
#include <cstdlib>
#include <map>
#include <set>
#include <bitset>
#define MAX_N 20000005
using namespace std;
typedef pair<int, int> ii ;
typedef vector< ii > vii ;
typedef vector<int> vi ;
int n,m,s,car[60],carQ[60];
string W,S;
queue<char> q;
int main() {
ifstream in; ofstream out;
in.open("input.txt"); out.open("output.txt");
in>>n>>m;
for(int i=0;i<n;i++){
in>>S[i];
car[(int)(S[i]-'A')]++;
}
for(int i=0;i<m;i++)
in>>W[i];
for(int i=0;i<m;i++){
if(!car[(int)(W[i]-'A')])
while(!q.empty()){
carQ[q.front()-'A']--;
q.pop();
}
else{
q.push(W[i]);
carQ[(int)(W[i]-'A')]++;
while(carQ[(int)(W[i]-'A')]>car[(int)(W[i]-'A')]){
carQ[q.front()-'A']--;
q.pop();
}
if(q.size()==n)
s++;
}
}
out<<s;
in.close(); out.close();
return 0;
}
答案 0 :(得分:2)
for(int i=0;i<n;i++){
in>>S[i];
这没有意义。由于S
为空,S[i]
可能无法存在。