P5587 WA40分 求助
查看原帖
P5587 WA40分 求助
376158
YueQian_BXFZ楼主2022/8/12 08:27
**测试数据是过的,但是 WA40分
(复制到C++后的行数)主要怀疑程序第36行与第40行。
希望帮我解答一下,谢谢!**

这是我的代码:

#include<bits/stdc++.h>
using namespace std;
const int N=10001;
string s1[N],s2[N]; //定义了两个字符串类型的数组(s1是范文 s2是输入)
int s2s[N]; //定义了s2的长度数组
int n,k;
double cnt,T;
int main(){
	k=1;
	while(getline(cin,s1[k])){
		if(s1[k]=="EOF") break;
		if(s1[k]!="") k++;
	}//输入范文 
	k=1;
	while(getline(cin,s2[k])){
		if(s2[k]=="EOF") break;
		if(s2[k]!=""){
			s2s[k]=s2[k].size();
			k++;
		}
	}//输入R君的输入并记录长度 
	n=k-1;
	cin>>T; //输入时间 
	for(int i=1;i<=n;i++){
		for(int j=0;j<s2s[i];j++){
			if(s2[i][j]=='<'){
				for(int t=j+1;t<s2s[i];t++){
					s2[i][t-2]=s2[i][t]; //如果扫描到退格键那么把退格键以及前面的一个字符删除
				}
				s2s[i]-=2; //对应的长度数组减小2(但末两位的没删去 e.g. ab<cd  变为  acdcd)
			}
		}
	}
	for(int i=1;i<=n;i++){
		int a=s1[i].size(); //由于我有了长度数组所以变向的把后面的东西删除了
		for(int j=0;j<min(a,s2s[i]);j++) //e.g. ab<cd  变为  acdcd 长度变为3所以取出来的就是acd 
			if(s1[i][j]==s2[i][j])
				cnt++;
	}
	cout<<int(cnt*60.0/T+0.5)<<endl; //四舍五入(有点怀疑是不是这里错了)
	return 0;
}
2022/8/12 08:27
加载中...