能过试例,可是全WA,已经加上注释,dalao看看吧
查看原帖
能过试例,可是全WA,已经加上注释,dalao看看吧
105820
阿尔托莉雅丶楼主2020/10/17 13:47
#include <stdio.h>
#include <string.h>

char str1[10000][100001]; //存放范文 
char str2[100001];	//存放输入 

int main(void)
{
	int i = 0, j, len1, len2, time, minn, top = 0;
	char stack[80]; 
	double t = 0;
	 
	scanf("%[^\n]", str1[i]);
	getchar();
	
	while(strcmp(str1[i], "EOF"))
	{
		for(j = 0; ;j++)         //用栈还原真正字符串 
		{
			if(str1[i][j] == '\0') 
				break;
			if(str1[i][j] == '<')
			{
				if(top == 0)
					;
				else
					top--;
			}
			else
			{
				stack[top++] = str1[i][j];
				stack[top] = '\0';
			}
		}
		
		top = 0;				//清空栈 
		strcpy(str1[i], stack);
		
		scanf("%[^\n]", str1[++i]);
		getchar();
		
	} 
	scanf("%[^\n]", str2);
	getchar();
	
	
	i = 0;
	while(strcmp(str2, "EOF"))
	{	
		top = 0;                //清空栈 
		len1 = strlen(str1[i]); 
		len2 = strlen(str2);
		for(j = 0;j < len2 ;j++)  //用栈还原真正字符串  
		{
			if(str2[j] == '<')
			{
				if(top == 0)
					;
				else
					top--;
			}
			else
			{
				stack[top++] = str2[j];
				stack[top] = '\0'; 
			}
		}
		strcpy(str2, stack);
		
		len2 = strlen(str2); //更新输入字符串长 
		minn = len1 > len2 ? len2 : len1; //取最短的计入循环边界 
		
		for(j = 0; j < minn ; j++)  //开始计数 
		{
			
			if(str1[i][j] == str2[j]) 
				t++;
		}
		i++;
		
		scanf("%[^\n]", str2);
		getchar(); 
	}
	scanf("%d", &time);
	
	printf("%ld", ( long int)(t / (time / 60) + 0.5));
	
	return 0;
} 



2020/10/17 13:47
加载中...