杭电2034

来源:百度知道 编辑:UC知道 时间:2024/07/01 22:46:52
编译成功,测试数据没问题,但是改来改去就是不成功。
各位帮下忙!!
我开始没考虑排序最后才考虑进去,所以代码显得有点臃肿。不过有注释,思路蛮清楚的,测试数据也没错。请问我具体哪里错了。

#include<iostream>
using namespace std;
int main()
{
int n,m;
long i;
int r;
while(cin>>n>>m)
{
if(n==0&&m==0)
{
break;
}
int a[120];
int b[120];
long c[100001]={0};
long d[100001]={0};
long e[10000]={0};
int flag=0;
for(i=0;i<n;i++)//输入数组a,并且去掉相同的。
{
cin>>a[i];
if(c[a[i]]==0)
{
c[a[i]]=1;
}
else if(c[a[i]]==1)
{
i--;
}
}
for(i=0;i<m;i++)//输入数组b,并且去掉相同的。
{
cin>>b[i];
if(d[b[i]]==0)
{
d[b[i]]=1;
}
else if(d[b[i]]==1)
{
i--;
}
}
for(i=0;i<n;i++)//求a-b的解。
{
for(r=0;r<m;r++)
{
if(a[i]==b[r])

为啥我测试你的程序,连测试数据都有问题?
两个sample的测试分别是:
3 3 1 2 3 1 4 7
2 3 10003 10006 10009
3 7 2 5 8 2 3 4 5 6 7 8
10004 10005 10006 10007 10008 10009 10010

我的环境vs2008

==============================================
PS:lz不妨尝试一下STL里面的set。这道题简直就是为了set而出的,什么排序、在集合中找元素啊,set都轻松搞定。
set中的元素自动按递增顺序存储,根本不用手写排序,直接输出即可,爽啊。

我的代码(AC了),没有刻意缩减行数,也才36行。
#include<iostream>
#include<set>
using namespace std;

int main()
{
set<int> A;
int n, m;

while (cin>>n>>m && !(n==0 && m==0))
{
A.clear ();
for (int i=1; i<=n; i++)
{
int tmp;
cin>>tmp;
A.insert (tmp);
}
for (int i=1; i<=m; i++)
{
int tmp;
cin>>tmp;
A.erase (tmp);
}
if (A.empty ())
cout<<"NULL"<<endl;
else
{
set<int>::iterator it;