ACM总是Time Limit Exceeded,到底是WRONG ANSWER还是算法太暴力,还是死循环或是什么别的问题呢?
我的C++代码:#include<iostream>usingnamespacestd;intmain(){intn,i,j,q,a[100000],k;while(ci...
我的C++代码:
#include<iostream>
using namespace std;
int main()
{
int n,i,j,q,a[100000],k;
while(cin>>n)
{
for(i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>q;
for(j=1;j<=q;j++)
{
cin>>k;
for(i=1;i<=n;i++)
{
if(k==a[i])
{
cout<<i<<endl;
goto A;
}
else if(i<n) continue;
else cout<<"-1"<<endl;
A:
break;
}
}
}
return 0;
}
我改后的代码:
#include <stdio.h>
int main()
{int n,i,j,q,a[100000],k;
while(scanf("%d",&n))
{for(i=1;i<=n;i++)
{scanf("%d",&a[i]);
}
scanf("%d",&q);
for(j=1;j<=q;j++)
{scanf("%d",&k);
for(i=1;i<=n;i++)
{if(k==a[i])
{printf("%d",i);
printf("\n");
break;
}
else if(i<n) continue;
else printf("-1\n");
break;
}
}
}
return 0;
}
无论是哪一种都是Time Limit Exceeded,是哪里出错了,或是可以怎样优化,请求帮忙,小女子感激不尽! 展开
#include<iostream>
using namespace std;
int main()
{
int n,i,j,q,a[100000],k;
while(cin>>n)
{
for(i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>q;
for(j=1;j<=q;j++)
{
cin>>k;
for(i=1;i<=n;i++)
{
if(k==a[i])
{
cout<<i<<endl;
goto A;
}
else if(i<n) continue;
else cout<<"-1"<<endl;
A:
break;
}
}
}
return 0;
}
我改后的代码:
#include <stdio.h>
int main()
{int n,i,j,q,a[100000],k;
while(scanf("%d",&n))
{for(i=1;i<=n;i++)
{scanf("%d",&a[i]);
}
scanf("%d",&q);
for(j=1;j<=q;j++)
{scanf("%d",&k);
for(i=1;i<=n;i++)
{if(k==a[i])
{printf("%d",i);
printf("\n");
break;
}
else if(i<n) continue;
else printf("-1\n");
break;
}
}
}
return 0;
}
无论是哪一种都是Time Limit Exceeded,是哪里出错了,或是可以怎样优化,请求帮忙,小女子感激不尽! 展开
灵德
2024-11-19 广告
2024-11-19 广告
由化工方面的博士、教授和企业的高级技术人员与管理人员创建的高科技化工企业。主要从事下列产品的开发、生产和相关的技术服务:▼高纯电子化学品(主要为高纯季铵碱 )▼季铵碱系列▼季铵盐系列▼季膦化合物系列▼相转移催化剂(PTC)▼均苯四甲酸 (P...
点击进入详情页
本回答由灵德提供
展开全部
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
using namespace std;
int num[100010];
int main(void)
{
int n,q,i,idx;
while(scanf("%d",&n)!=EOF){
memset(num,0,sizeof(num));
for(i=1;i<=n;i++){
scanf("%d",&idx);
num[idx]=i;
}
scanf("%d",&q);
while(q--){
scanf("%d",&idx);
if(num[idx]==0)
printf("-1\n");
else
printf("%d\n",num[idx]);
}
}
return 0;
}
请参考这段代码哈,欢迎交流。满意请采纳。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额外开一个数组就能搞定了。 你的复杂度是n*q的,实际上只要O(n)就可以了。
追问
技术小白,请问要怎么弄?希望能够详细解答!
追答
有人已经贴出代码了,应该很好理解,好好看吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询