POJ 1029,一直WA,求大神帮我看看代码

这是我自己的代码,可是一直是WA,求大神解答。具体思路就是把称量过的硬币标记为已访问,“=”好的的硬币全标记为真,最后已访问且标记为假的硬币则是假币,其他都是输出0.#i... 这是我自己的代码,可是一直是WA,求大神解答。具体思路就是把称量过的硬币标记为已访问,“=”好的的硬币全标记为真,最后已访问且标记为假的硬币则是假币,其他都是输出0.
#include<iostream>
using namespace std;
#define MAX 1005
int main()
{
int visited[MAX];//硬币是否访问过
int real[MAX];//记录硬币真假
int coin[MAX];//输入硬币编号
int N,K,num,no;
memset(visited,0,sizeof(visited));//对visited清零
memset(real,0,sizeof(real));
char ch;
cin>>N>>K;
for(int i=0;i<K;i++)
{
cin>>num;
for(int j=0;j<2 *num;j++)
{
cin>>no;
coin[j] = no-1;
visited[coin[j]] = 1;//标记被测量过
}
cin>>ch;
if(ch=='=')
{
for(int j=0;j<2*num;j++)
{
real[coin[j]] = 1;
}
}

}

for(int j=0;j<N;j++)
{
if(visited[j]&&!real[j])
{
cout<<j+1<<endl;
break;
}
else
{

if(j==N-1) cout<<0<<endl;
}
}
return 0;
}
展开
 我来答
shang1995217
2013-09-03 · 超过14用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:34.4万
展开全部
额, 你的算法貌似有些问题,其实你要明白以下几点:1、不只是等号可以标注真币2、假币不一定会被访问过;
要解决这个问题,可以从这么两个方面下手:1、等号标注的一定是真币2、不等号标注的硬币为敏感硬币,需要加特别标注,除非已被标注是真币
再给你两个测试用例吧:
5 3
2 1 2 3 4
=
;第一个,结果是5
5 3
2 1 2 3 4
<
1 3 4
<
;第二个用例,结果是4
名片
2024-10-28 广告
作为优菁科技(上海)有限公司的一员,Altair HyperWorks是我们重点代理的CAE软件套件。该软件以其全面的仿真能力、丰富的建模工具和高效的优化设计功能著称,广泛应用于汽车、航空航天、能源及电子等行业。HyperWorks通过集成... 点击进入详情页
本回答由名片提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式