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-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
展开全部
#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)就可以了。
追问
技术小白,请问要怎么弄?希望能够详细解答!
追答
有人已经贴出代码了,应该很好理解,好好看吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询