gpt4 book ai didi

c - CodeChef 上 "Discrepancies in voter list"(VOTERS) 的错误答案

转载 作者:行者123 更新时间:2023-11-30 19:18:50 25 4
gpt4 key购买 nike

我正在 Codechef 上解决这个问题。但我提交的代码得到了错误的答案。问题链接::http://www.codechef.com/problems/VOTERS/

问题简述::有3位官员负责收集该地区选民的数据,但他们收集的数据存在一些差异,最终准备的名单只包括那些在该地区出现两次或以上的选民。名单由 3 名官员准备。我们必须找到最终的选民人数并打印他们的选民 ID。

我的代码::

#include <stdio.h>

int a[150000],b[50000],c[100000][2];
int merge(int p,int q);
int main()
{
int n1,n2,n3;
int i,j,k,count,val;
scanf("%d %d %d",&n1,&n2,&n3);
for(i=0;i<n1;i++)
scanf("%d",&a[i]);

for(i=0;i<n2;i++)
scanf("%d",&b[i]);

k=merge(n1,n2);

count=0;
j=0;
for(i=0;i<n3;i++)
{
scanf("%d",&val);
while(val>c[j][0] && j<k)
{
if(c[j][1]==2)
{
a[count]=c[j][0];
count++;
}
j++;
}

if(val==c[j][0] && j<k)
{
a[count]=c[j][0];
count++;j++;
}
}
for(i=j;i<k;i++)
{
if(c[i][1]==2)
{
a[count]=c[j][0];
count++;
}
}
printf("%d\n",count);

for(i=0;i<count;i++)
printf("%d\n",a[i]);

return 0;
}


int merge(int p,int q)
{
int i=0,j=0,k=0;
while(i<p && j<q)
{
if(a[i]<b[j])
{
c[k][0]=a[i];
c[k][1]=1;
i++;k++;
}
else if(a[i]>b[j])
{
c[k][0]=b[j];
c[k][1]=1;
k++;j++;
}
else
{
c[k][0]=a[i];
c[k][1]=2;
i++;j++;k++;
}
}
while(i<p)
{
c[k][0]=a[i];
c[k][1]=1;
i++;k++;
}
while(j<q)
{
c[k][0]=b[j];
c[k][1]=1;
j++;k++;
}
return k;
}

我的算法的简要描述::

我有 3 个数组 a[]b[]c[][]。首先,我在数组 a[] 中输入第一个工作人员给出的选民 ID。然后我将工作人员 2 收集的选民 ID 输入到数组 b[] 中。然后我将这两个工作人员收集的数据按升序合并到数组 c[][] 中,并使用 c[][] 的第二行存储多少个2 个数组(1 或 2)中出现 id 值的次数。然后,对于第三个工作人员,我将 id 值作为单个变量 val 中的 1 乘 1 输入。然后我在合并数组 c[][] 中找到它的正确位置,并查看该元素是否出现在 c[][] 中。如果是,那么我将其包含在我的最终 ans 数组中,否则我会忽略。 (因为如果一个元素不存在于合并数组中,则意味着它是第一次出现,因此我们将忽略它)。我还同时检查 c[][] 中的任何元素是否出现了两次(即,如果 c[i][1]=2),并且将其包含在答案中。之后,我检查合并数组中是否有任何剩余元素并且已出现两次,并将它们包含在最终答案中。

我希望我能说清楚我打算做什么。我知道它非常复杂(按照我解释的方式),但请帮助大家。

我已经尝试了很多测试用例,但我不知道为什么这段代码给出了错误的答案。 :(请大家帮忙。感谢您提前提供任何帮助..:)

最佳答案

for循环中出现错误::

    for(i=j;i<k;i++)
{
if(c[i][1]==2)
{
a[count]=c[j][0];
count++;
}
}

循环在 i 上运行,但在 if 条件下我执行 a[count]=c[j][0],这是一个非常小的错误,但让我思考了几个小时。感谢大家研究这个问题。非常抱歉用这么蹩脚的问题打扰大家。谢谢..:)

关于c - CodeChef 上 "Discrepancies in voter list"(VOTERS) 的错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26183377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com