题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5058

(格式有点问题,为了方便阅读~~~整个复制下来吧)

题目意思:给出两个长度都为 n 的集合你,问这两个集合是否相等。

其实思路非常容易想到,就是去重后判断嘛~~~我用到了set 来做。不过有个小细节!!!

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <set>
using namespace std; set<int> a, b;
set<int>::iterator pa, pb; int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif int n, in;
while (scanf("%d", &n) != EOF)
{
a.clear();
b.clear();
for (int i = ; i < n; i++)
{
scanf("%d", &in);
a.insert(in);
}
for (int i = ; i < n; i++)
{
scanf("%d", &in);
b.insert(in);
} bool flag = true;
pb = b.begin();
for (pa = a.begin(); pa != a.end() && pb != b.end(); pa++, pb++)
{
if (*pa != *pb)
{
flag = false;
break;
}
}
printf("%s\n", flag && pa == a.end() && pb == b.end() ? "YES" : "NO");
}
return ;
}

  

特别要注意,最后不能单纯只用 flag 来判断输入和输出!!!还需要结合 pa 和 pb 的位置来判断,即都要直到集合结尾,代表元素个数是一样的。因为有可能两个集合去重之后大小不等,而for 循环中是没有考虑到这点的!!只是单纯地以比较短的那个集合来作为基准,如果遇到 {1, 3, 5} , {1, 3, 3},它会提前跳出来并且判断结果是 YES,明显是错的嘛~~~

粗心呀~~~

另外一种解法,unique 妙用,第一次使用,留个纪念吧~~~~

(unique 用之前需要先排序,而且它不是真正的删除,网上说是挪到数组后面而已)

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm> using namespace std; const int maxn = + ;
int a[maxn], b[maxn]; int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif int n;
while (scanf("%d", &n) != EOF)
{
for (int i = ; i < n; i++)
scanf("%d", &a[i]);
for (int i = ; i < n; i++)
scanf("%d", &b[i]);
sort(a, a+n);
sort(b, b+n);
int la = unique(a, a+n) - a;
int lb = unique(b, b+n) - b; if (la != lb)
printf("NO\n");
else
{
bool flag = true;
for (int i = ; i < la; i++)
{
if (a[i] != b[i])
{
flag = false;
break;
}
}
printf("%s\n", flag ? "YES" : "NO");
}
}
return ;
}

最新文章

  1. 跟我学习NHibernate (1)
  2. QT读取文本(字符串)最后一行的方法
  3. 64-who 简明笔记
  4. H608B无线路由破解方法
  5. js高程 第 4章 变量、作用域和内存问题 【笔记】
  6. UIAutomation识别UI元素
  7. PHP设计模式笔记五:策略模式 -- Rango韩老师 http://www.imooc.com/learn/236
  8. uva 11210 Chinese Mahjong(暴力搜索)
  9. 201521123105 第三周Java学习总结
  10. http://codeforces.com/problemset/problem/847/E
  11. Charles 抓包工具绿化过程记录
  12. Coursera, Big Data 1, Introduction (week 1/2)
  13. LoadRuner12.53教程(一)
  14. python中的extend
  15. 690. Employee Importance
  16. logback的日志文件中出现大量的ESC符号
  17. Spring在代码中获取properties文件属性
  18. linux下每次git clone不需输入账号密码的方法
  19. NVIC配置中的分组详解
  20. BZOJ 1036 树的统计 | 树链剖分模板题

热门文章

  1. 似然估计中为什么要取对数以GMM为例
  2. 配置Junit测试程序
  3. JSP表单处理
  4. 全程图解 手把手教您开启windows终端服务
  5. Oracle 常用入侵命令
  6. Python2.x与Python3.x的区别
  7. Source Insight 基本使用(1)-使用Source Insight查看Android Framework 源码
  8. 登录DA面板出现:License has expired
  9. NOIP2011 聪明的质监员
  10. detours安装和使用