各位先看看我的一份错误代码
#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;
}
其中我这边如果有多个相同长度 0 连续起来就会出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;
}
提交上去时就发现……
求助.