关于我的一个奇怪的bug
查看原帖
关于我的一个奇怪的bug
295052
tiger2008楼主2023/11/14 16:34

各位先看看我的一份错误代码

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string s;
string s1[10];
int arr[10];
int main(){
	for(int i=1;i<=9;i++)s1[i]="";
	cin>>s;
	int cnt=1;
	for(int i=0;i<s.length();i++)
		if(i%5==4)cnt++;
		else{
			if(s1[cnt].length()==0 && s[i]=='0')continue;
			s1[cnt]+=s[i];
		}
	for(int i=1;i<=8;i++)
		if(s1[i].length()==0)arr[i]=arr[i-1]+1;
		else arr[i]=0;
	int maxn=0;
	cnt=0;
	for(int i=1;i<=8;i++)maxn=max(maxn,arr[i]);
	for(int i=1;i<=8;i++)
		if(arr[i]==maxn)
			cnt=i-maxn+1;//bug
	for(int i=1;i<=8;i++)
		if(i==cnt){
			if(cnt==1)cout<<":";
			cout<<":";
			i+=maxn-1;
			if(i>=8)break;
		}else{
			if(s1[i].length()==0)cout<<"0";
			else cout<<s1[i];
			if(i!=8)cout<<":";
		}
	return 0;
}

结果我才90

其中我这边如果有多个相同长度 00 连续起来就会出bug。

于是聪明的我就改了改我的代码。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string s;
string s1[10];
int arr[10];
int main(){
	for(int i=1;i<=9;i++)s1[i]="";
	cin>>s;
	int cnt=1;
	for(int i=0;i<s.length();i++)
		if(i%5==4)cnt++;
		else{
			if(s1[cnt].length()==0 && s[i]=='0')continue;
			s1[cnt]+=s[i];
		}
	for(int i=1;i<=8;i++)
		if(s1[i].length()==0)arr[i]=arr[i-1]+1;
		else arr[i]=0;
	int maxn=0;
	cnt=0;
	for(int i=1;i<=8;i++)maxn=max(maxn,arr[i]);
	for(int i=8;i>=1;i--)
		if(arr[i]==maxn)
			cnt=i-maxn+1;
	for(int i=1;i<=8;i++)
		if(i==cnt){
			if(cnt==1)cout<<":";
			cout<<":";
			i+=maxn-1;
			if(i>=8)break;
		}else{
			if(s1[i].length()==0)cout<<"0";
			else cout<<s1[i];
			if(i!=8)cout<<":";
		}
	return 0;
}

提交上去时就发现……

为啥给我个TLE 60分啊

求助.

2023/11/14 16:34
加载中...