今天在做团队作业时发现了一个绝对值匹配的新思路,结果一调就一直RE,return 3221226505,之前也没遇到过这种情况,有没有懂得大佬指正一下问题是啥?
RE的原题 代码:
//|999-||323-(4343+234)|*81||*|323-(32131+|89-7834|)|-32133
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s,ans;
bool ln;
int n;
cin>>s;
n=s.length();
// cout<<n;
int nsum=0,csum=0,asum=0;
for(int i=0;i<n;i++)
{
if(asum==0) nsum=csum=0;
// cout<<nsum<<" "<<csum<<" ";
if(isdigit(s[i]))
{
ans[i]=s[i];
if(asum!=0 && !ln) nsum++;
ln=1;
}
if(s[i]=='(' || s[i]==')')
{
ans[i]=s[i];
ln=0;
}
if(s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]=='/')
{
ans[i]=s[i];
if(asum!=0) csum++;
ln=0;
}
if(s[i]=='|')
{
ln=0;
// cout<<"jfsdakl "<<csum<<" "<<nsum<<"hadfkljfdhsakl ";
if(nsum==csum+1 && asum!=0)
{
ans[i]='>';
asum--;
}
else
{
ans[i]='<';
asum++;
}
}
// cout<<ans[i]<<endl;
}
// cout<<ans;
// cout<<1;
//cout<<" dsajfasjf";
for(int i=0;i<n;i++)
{
cout<<ans[i];
}
return 0;
}
出现bug的样例:|999-||323-(4343+234)|81|||323-(32131+|89-7834|)|-32133
大佬们帮看一下吧,24:00就停止提交了