求一简单算法、、、、

wangsiyuanoo 2009-05-15 09:51:51
int iNum[5]={n1, n2, n3, n4, n5};
想求一个算法:这5个元素,可能有彼此相等的,也有不等的。如何判断,会不会存在3个不相等的情况呢?
比如1,2,3,1,2这种情况
当然前提是,并不知道这5个元素分别是什么!
...全文
95 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwqna 2009-05-15
  • 打赏
  • 举报
回复
限定五个根本就没什么意思,如果到5000个就有点意思,
aaaa3105563 2009-05-15
  • 打赏
  • 举报
回复
顶上··
bbb332 2009-05-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lpms26086 的回复:]
C/C++ code
#include<iostream>
using namespace std;

int main()
{
int a[5],i,j,tag;
for(i=0;i<5;++i) cin>>a[i];
for(i=0;i<5;++i){
tag=0;
for(j=0;j<5;++j)
if(a[i]-a[j]==0)
++tag;
if(tag==2){//有三个不相等
cout<<"yes";
return 1;
}
}
cout<<"no";//不存在
return 0;
}
[/Quote]
up
lingyin55 2009-05-15
  • 打赏
  • 举报
回复
如何判断,会不会存在3个不相等的情况呢?

不好意思,看错,以为是要找相等的,
思路还是一样,先排序,然后遍历一次就知道有多少个不一样了。
比如设一个计数器为1,然后遍历第一个,第二个如果和第一个不一样就count加1,
一样count就不变。。。
lpms26086 2009-05-15
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;

int main()
{
int a[5],i,j,tag;
for(i=0;i<5;++i) cin>>a[i];
for(i=0;i<5;++i){
tag=0;
for(j=0;j<5;++j)
if(a[i]-a[j]==0)
++tag;
if(tag==2){//有三个不相等
cout<<"yes";
return 1;
}
}
cout<<"no";//不存在
return 0;
}
lingyin55 2009-05-15
  • 打赏
  • 举报
回复
先排序,再计算有没有三个连续一样。
crst_zh 2009-05-15
  • 打赏
  • 举报
回复
那就在在建一个数组,大小为5,一个一个往进放(先看存在不存在,不存在放进去)。这样最后这个数组有几个,就知道了有没有重复的,还知道哪个重复了。
wangsiyuanoo 2009-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sagegz 的回复:]
首先获得一共有几个元素,再把所有元素放入set中.
获取set集合中元素的个数与先前元素的个数比较,得出相等元素个数.
如果有3个不相等,那么set集合中的元素就只有3.
[/Quote]
额。。。可以不用任何STL的东西么
就是用单纯的C++实现
sagegz 2009-05-15
  • 打赏
  • 举报
回复
首先获得一共有几个元素,再把所有元素放入set中.
获取set集合中元素的个数与先前元素的个数比较,得出相等元素个数.
如果有3个不相等,那么set集合中的元素就只有3.

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧