由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
CS版 - 请教一个好的算法
相关主题
[转载] How to detect overflow in C?[转载] 请教个perl 的问题
问一个c++问题求助一个随机过程或者概率统计题,谢谢啦
急问:一个迭代器的问题,查了半天不知道为啥不对请教一个distribution之间的likelihood问题 (转载)
How to efficiently enumerate triangles in a large network?请教一个matlab画图问题。
请高手帮助几道 perl 编程题 (转载)若问JAVA问题~
如何clean up C语言中的#if condition statement? (转载)histogram用什么画好?
如何有效地判断一个32位二进制数里有几个1?Amazon.com Phone Interview 备受打击
问一个production system的问题请问,有没有软件自动识别视频还是音频的??
相关话题的讨论汇总
话题: foreach话题: inputindex话题: bitindex话题: histogram话题: selecttwo
进入CS版参与讨论
1 (共1页)
g********o
发帖数: 132
1
假设有300个二进制数 (每个二进制数都是30位)
1001001011111011110
1010101110111111001
1010111101110101110
1011111000000010101
..
..
..
..
1001001011111011110
1010101110111111001
1010111101110101110
1011111000000010101
所以就是,300行,30列
位置:每个二进制数(即每一行)最左边的一位为第1位,最右边的一位就是第30位。
现在需要输出:所有符合要求的两个位置,条件是在这么多的二进制数中,这两个位置
都为1的次数超过50次。
比如输出:
第1位,第2位
第5位,第20位
.
.
.
请问有什么好的算法吗?
k**********g
发帖数: 989
2

I can think of a two-pass approach.
First pass, Find the digits that do not have enough ones (i.e. bit positions
for which less than 50 inputs have a value of one in that bit position).
This first step is optional - even if you skip this step, you still only
need to accumulate ( 30 * 29 / 2 ) = 435 histogram bins.
// initialize
foreach bitIndex
accum [ bitIndex] = 0
// accumulate
foreach inputIndex
foreach bitIndex
accum [ bitIndex ] += input [ inputIndex ] . bit [ bitIndex ]
// Second step.
Let SelectTwo = ...
... Select ( i , j ) from ( bitIndex.Min <= i < j <= bitIndex.Max )
// initialize
foreach tuple ( i, j ) in SelectTwo
histogram [ i, j ] = 0
// accumulate
foreach inputIndex
foreach tuple ( i, j ) in SelectTwo
if ... ( input [ inputIndex ] . bit [ i ] == 1 ) ,
AND ( input [ inputIndex ] . bit [ j ] == 1 ) ,
then
histogram [ i , j ] += 1
endif
// print result
foreach tuple ( i , j ) in SelectTwo
if histogram [ i , j ] >= 50
print i , j , histogram [ i , j ]
endif

【在 g********o 的大作中提到】
: 假设有300个二进制数 (每个二进制数都是30位)
: 1001001011111011110
: 1010101110111111001
: 1010111101110101110
: 1011111000000010101
: ..
: ..
: ..
: ..
: 1001001011111011110

f****8
发帖数: 33
3
楼上的算法复杂度为O(M^2*N^2).
下面给出O(M*N)的算法,以及实现。
第一步,先扫描各行各列,找出每一列1的个数,然后将每列1的个数及列号按个数从大
到小排列到
一个LIST中,且直接忽略1的个数小于50的列号;O(M*N)+O(MlogM),其中N为行数,M为
列数。
第二步,根据第一步扫描的结果,创建 FP-tree(Frequency Pattern tree)。创建方
法如下:树中每个节点包括column-index,出现次数,worst复杂度O(M*N).
第三步,统计结果,就是遍历树的过程,有一些技巧,worst复杂度为O(M^2).
因为N》M,所以整体worst复杂度:O(M*N).
本人冬季刚计算机工程专业硕士毕业,之前在国内有一定工作经历,JAVA C++ WEB DB
都做过一些。找湾区码农工作,prefer涉及BIG DATA和MACHINE LEARNING相关的工作,
求内推:f****[email protected],万分感激!
m***c
发帖数: 257
4
顶干货

N)

【在 f****8 的大作中提到】
: 楼上的算法复杂度为O(M^2*N^2).
: 下面给出O(M*N)的算法,以及实现。
: 第一步,先扫描各行各列,找出每一列1的个数,然后将每列1的个数及列号按个数从大
: 到小排列到
: 一个LIST中,且直接忽略1的个数小于50的列号;O(M*N)+O(MlogM),其中N为行数,M为
: 列数。
: 第二步,根据第一步扫描的结果,创建 FP-tree(Frequency Pattern tree)。创建方
: 法如下:树中每个节点包括column-index,出现次数,worst复杂度O(M*N).
: 第三步,统计结果,就是遍历树的过程,有一些技巧,worst复杂度为O(M^2).
: 因为N》M,所以整体worst复杂度:O(M*N).

u****u
发帖数: 229
5
写了一个,请大家指正.没有编译过.
void GetPair(void)
{
int32 Data[300];
int index[30];
int i,j;
for (i=0;i<30;i++)
for (j=0;j<30;j++)
index[j]+=(data[i]>>j)&1;
for (i=0;i<30;i++)
for (j=i;j<30;i++)
if (index[i]+index[j]>50)
printf("%d %dn",i,j);
}

【在 g********o 的大作中提到】
: 假设有300个二进制数 (每个二进制数都是30位)
: 1001001011111011110
: 1010101110111111001
: 1010111101110101110
: 1011111000000010101
: ..
: ..
: ..
: ..
: 1001001011111011110

m****t
发帖数: 2329
6
为啥是 int32型

【在 u****u 的大作中提到】
: 写了一个,请大家指正.没有编译过.
: void GetPair(void)
: {
: int32 Data[300];
: int index[30];
: int i,j;
: for (i=0;i<30;i++)
: for (j=0;j<30;j++)
: index[j]+=(data[i]>>j)&1;
: for (i=0;i<30;i++)

1 (共1页)
进入CS版参与讨论
相关主题
请问,有没有软件自动识别视频还是音频的??请高手帮助几道 perl 编程题 (转载)
O(NlogN) largest rectangle in histogram (转载)如何clean up C语言中的#if condition statement? (转载)
世界上有10种人,一种懂二进制,一种不懂。- -!你懂的 (转载)如何有效地判断一个32位二进制数里有几个1?
求算法推荐问一个production system的问题
[转载] How to detect overflow in C?[转载] 请教个perl 的问题
问一个c++问题求助一个随机过程或者概率统计题,谢谢啦
急问:一个迭代器的问题,查了半天不知道为啥不对请教一个distribution之间的likelihood问题 (转载)
How to efficiently enumerate triangles in a large network?请教一个matlab画图问题。
相关话题的讨论汇总
话题: foreach话题: inputindex话题: bitindex话题: histogram话题: selecttwo