| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5492 人关注过本帖
标题:判断6个数互不相等!!(给出源代码谢谢)
只看楼主 加入收藏
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
线性方法容易,写个hash

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-08 07:35
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
收藏
得分:0 
8知道用hoare算法行不行

Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
2008-07-08 08:09
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
[bo][un]卧龙孔明[/un] 在 2008-7-8 07:35 的发言:[/bo]

线性方法容易,写个hash


拜托不要老hashhash的……那个叫计数(Count)。
线性的原因是因为计数排序本身就是线性的,这其实还是通过排序进行判断的子方法。
虽然时间的确是线性,但是空间复杂度不理想。
我希望能得到原地判断的线性方法。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-08 11:04
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
只有6个数,hash冲突的几率很小,并且,假设真有冲突,也只是最多5个冲突。
如果数据规模小,用个countsort也可以

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-08 11:05
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
哦?真的是Hash??

我还不是很了解,能具体说明一下么?谢谢~~

主要是,hash以后,如何判断是否相等。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-08 11:22
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo][un]StarWing83[/un] 在 2008-7-8 11:22 的发言:[/bo]

哦?真的是Hash??

我还不是很了解,能具体说明一下么?谢谢~~

主要是,hash以后,如何判断是否相等。


设标志为Flag,初始=1
假如读入的元素(设为X)放入hash后发现冲突,那么与hash中的数比较,如果不相等,那么解决hash冲突问题(这里,开闭散列就不说了,学长应该明白),否则将flag=0,并退出
最后,if(flag) 不等 else 有相等的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-08 11:27
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
给个简单的程序(C)

char hash[1000000]={0};
char flag=1;
int i,temp;
for(i=0;i<6;++i)
{
    scanf("%d",&temp);
    if(hash[temp%999991])
    {
        flag=0; break;
    } else hash[temp%999991]=1;
}
if(flag) printf("互不相等");

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-08 11:31
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
明白了……通过hash缩小比较范围……的确可以达到n的复杂度,谢谢孔明兄~~~

那有没有原地判定的线性方法呢?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-08 11:37
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo][un]StarWing83[/un] 在 2008-7-8 11:37 的发言:[/bo]

明白了……通过hash缩小比较范围……的确可以达到n的复杂度,谢谢孔明兄~~~

那有没有原地判定的线性方法呢?


不清楚,不过这个题部分类似于NOIP2007提高组第一个,由那题的解题思路看,如果还要知道互不相等的个数,可以用随机化二叉排序树并改进一下,接点中count记录count所在节点的数据出现的个数,这样,设一共不重复的数据(例如1 2 2 3算3个数据)为n,那么复杂度为nlogn,即,如果重复数据较多,那么此方法的速率高于qsort很多

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-08 11:43
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
对于这个题,想必数据中重复的很少或者没有,所以用我说的那个方法,还没有quicksort快

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-07-08 11:46
快速回复:判断6个数互不相等!!(给出源代码谢谢)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022382 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved