ACM问题 北大ACM网站 http://poj.org/problem?id=2845 2845题 我的程序怎么老超时???
#include<iostream>#include<stdio.h>#include<string.h>usingnamespacestd;intmain(){char...
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char aa[81],bb[81];
int length1,length2,maxlen,t,count=1,i,j;
cin>>t;
while(count<=t)
{
cin>>aa>>bb;
length1=strlen(aa);
length2=strlen(bb);
// cout<<length1<<" "<<length2<<endl;
maxlen=length1>length2?length1:length2;
int a[90],b[90],c[90],s[90];
for(i=0;i<90;i++)
a[i]=b[i]=c[i]=s[i]=0;
for(i=0;i<maxlen;i++)
{
if(i<length1)
a[i+maxlen-length1+1]=aa[i]-'0';
else
a[i+maxlen-length1+1]=0; // cout<<a[i+1];
}
// cout<<endl;
for(i=0;i<maxlen;i++)
{
if(i<length2)
b[i+maxlen-length2+1]=bb[i]-'0';
else
b[i+maxlen-length2+1]=0; // cout<<b[i+1];
}
// cout<<endl;
c[maxlen]=0; // ??????????????????
for(i=maxlen;i>0;i--)
{
s[i]=(a[i]^b[i]^c[i]);
c[i-1]=(a[i]&&b[i])+(b[i]&&c[i])+(a[i]&&c[i])>=1?1:0;
}
/* for(i=1;i<=maxlen;i++)
cout<<s[i];
cout<<endl; */
if(a[1]==0&&b[1]==0&&s[1]==1)
s[0]=1;
if(a[1]==1&&b[1]==1&&s[1]==0)
s[0]=1;
int sign=0;
for(i=0;i<=maxlen;i++)
{
if(s[i]==1)
{
sign=1;
break;
}
}
if(sign==0)
{
cout<<count++<<" "<<"0"<<endl;
}
else
{
cout<<count++<<" ";
if(s[0]==1)
{
for(i=0;i<=maxlen;i++)
cout<<s[i];
cout<<endl;
}
else
{
for(i=0;i<=maxlen;i++)
{
if(s[i]==1)
break;
}
for(i=i;i<=maxlen;i++)
cout<<s[i];
cout<<endl;
}
}
}
return 0;
}
是 Runtime Error 谁帮我改改代码??? 题目地址http://poj.org/problem?id=2845 展开
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char aa[81],bb[81];
int length1,length2,maxlen,t,count=1,i,j;
cin>>t;
while(count<=t)
{
cin>>aa>>bb;
length1=strlen(aa);
length2=strlen(bb);
// cout<<length1<<" "<<length2<<endl;
maxlen=length1>length2?length1:length2;
int a[90],b[90],c[90],s[90];
for(i=0;i<90;i++)
a[i]=b[i]=c[i]=s[i]=0;
for(i=0;i<maxlen;i++)
{
if(i<length1)
a[i+maxlen-length1+1]=aa[i]-'0';
else
a[i+maxlen-length1+1]=0; // cout<<a[i+1];
}
// cout<<endl;
for(i=0;i<maxlen;i++)
{
if(i<length2)
b[i+maxlen-length2+1]=bb[i]-'0';
else
b[i+maxlen-length2+1]=0; // cout<<b[i+1];
}
// cout<<endl;
c[maxlen]=0; // ??????????????????
for(i=maxlen;i>0;i--)
{
s[i]=(a[i]^b[i]^c[i]);
c[i-1]=(a[i]&&b[i])+(b[i]&&c[i])+(a[i]&&c[i])>=1?1:0;
}
/* for(i=1;i<=maxlen;i++)
cout<<s[i];
cout<<endl; */
if(a[1]==0&&b[1]==0&&s[1]==1)
s[0]=1;
if(a[1]==1&&b[1]==1&&s[1]==0)
s[0]=1;
int sign=0;
for(i=0;i<=maxlen;i++)
{
if(s[i]==1)
{
sign=1;
break;
}
}
if(sign==0)
{
cout<<count++<<" "<<"0"<<endl;
}
else
{
cout<<count++<<" ";
if(s[0]==1)
{
for(i=0;i<=maxlen;i++)
cout<<s[i];
cout<<endl;
}
else
{
for(i=0;i<=maxlen;i++)
{
if(s[i]==1)
break;
}
for(i=i;i<=maxlen;i++)
cout<<s[i];
cout<<endl;
}
}
}
return 0;
}
是 Runtime Error 谁帮我改改代码??? 题目地址http://poj.org/problem?id=2845 展开
展开全部
Runtime Error 是数组下标越界,不过没看到题目我也不知道怎么改好,不过建议你定义数组用这个语句试试:
int *a = new int [n];
这里的n是一个有确定数值的变量,也就是说你可以先输入数组长度n,在定义数组。例:
int n ;
cin>>n;
int *a = new int [n];
int *b = new int [n];
int *a = new int [n];
这里的n是一个有确定数值的变量,也就是说你可以先输入数组长度n,在定义数组。例:
int n ;
cin>>n;
int *a = new int [n];
int *b = new int [n];
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-12-01
展开全部
RUNTIME ERROR 不是超时 是你期中有数组越界了或者栈溢出了 我没有细看代码
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用链表就可以不超时了,我同学用链表做AC了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询