蒻蒟求助 全TLE但样例过了
查看原帖
蒻蒟求助 全TLE但样例过了
540396
玄铮楼主2022/8/4 20:48
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
char a[15];
queue<char> q;
int cnt, f = -1, num = -1;//总共有多少次出现 第一次出现的位置 当前单词数
bool flag;//(似乎可以删掉

int main() {
	cin >> a;
	int lena = strlen(a);
	for (int i = 0; i < lena; i++) {
		if (a[i] >= 65 && a[i] <= 90)
			a[i] += 32;
	}//统一小写

	for (int i = 0;; i++) {
		char b;
		scanf("%c", &b);
		if (b >= 65 && b <= 90)//统一小写
			b += 32;

		if (b == 10 && i == 0) {
			continue;
		} else if (b == 10 && i != 0) {
			break;
		} else if (b == 32) {//b为空格
			num++;
			if (q.size() == lena) { //长度相等
				bool vis = true;//是否成立
				for (int j = 0; j < lena; j++) {
					if (a[j] != q.front()) {//不匹配
						vis = false;
					}
					q.pop();//这里已经清空队列 不需要清空了(也许
					if (!vis)
						break;
				}

				if (vis) {//匹配
					if (f == -1)
						f = num;
					cnt++;
					flag = true;
				}
				while (!q.empty())
					q.pop();
				continue;
			} else {//长度不相等
				while (!q.empty()) {
					q.pop();
				}//清空队列
				continue;
			}
		}
		q.push(b);
	}

	if (!flag)
		printf("-1");
	else
		printf("%d %d", cnt, f);

	return 0;
}```
2022/8/4 20:48
加载中...