求助 前五个都对 后面的都错 也下不了 测试点
查看原帖
求助 前五个都对 后面的都错 也下不了 测试点
99244
我是大帅比ZED楼主2022/12/14 15:18
/*
  
 */
#include <stdio.h>
using namespace std;

char s1[200001], s2[200001];//总字符数不超过 10^5
int count1, count2;//记录范文和输入文字的总长度

int main (void)
{
	char ch = getchar();
	while (ch != 'F')//读到EOF 就应该退出循环了
	{
		if (ch == '<')//读到 退格符
		{
			if (s1[count1] != '\n')//如果刚刚读入的字符 不是 换行符
				count1--;//不算有效读入
			
			ch = getchar();//读下一个
			continue;
		}
		
		count1++;
		s1[count1] = ch;//存入数据
		ch = getchar();//继续读
	}
	//范文读取结束
	
	while ((ch < 'a' || ch > 'z') && ch != '.')//将其他内容给不读入
		ch = getchar();//退出循环后 读入的要么是字母 要么是 . \n
	
	while (ch != 'F')
	{
		if (ch == '<')
		{
			if (s2[count2] != '\n')//不是换行符 删除读入
				count2--;
			
			ch = getchar();
			continue;
		}
		
		count2++;
		s2[count2] = ch;
		ch = getchar();
	}
	
	count1 -= 3;
	count2 -= 3;//EOF 理应上是不需要的
	
	int ans = 0;
	for (int i=1, j=1; i<=count1 && j<=count2;)
	{
		if (s1[i] == s2[j] && s1[i] != '\n')//内容匹配 且不是换行符
			ans++;
		
		if (s1[i] == '\n')//如果范文已经是换行了 那么 输入的文章 也因随之匹配
		{
			while (s2[j] != '\n')//如果不是换行符 那就直到是换行符为止
			{
				j++;
			}
			
			i++;
			j++;//读取新内容
			continue;
		}
		if (s2[j] == '\n')
		{
			while (s1[i] != '\n')
			{
				i++;
			}
			
			i++;
			j++;
			continue;
		}
		
		//不是换行符的情况
		i++;
		j++;
	}
	
	int time;
	scanf("%d", &time);
	
	printf("%.0lf",(double)ans * 60 / (double)time );
	//题目要求四舍五入,所以使用printf%.0lf这样就会自动输出四舍五入的数字
	
	return 0;
}

2022/12/14 15:18
加载中...