RoyDeng's Weblog

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  7 随笔 :: 1 文章 :: 23 评论 :: 1 引用

公告

最新评论

共2页: 1 2 下一页 
不错哦,用到了数据结构,看上去有点复杂。
re: 基于N层满N叉树的组合算法 Silent Void 2008-02-29 09:10  
@RoyDeng
怪了,你的回复在评论列表中显示不出来?
如果N>64,可以考虑用BitArray,......
re: 基于N层满N叉树的组合算法 Intermapper 2008-02-28 11:09  
看的不是很明白!

1楼的好恶劣!
re: 基于N层满N叉树的组合算法 Silent Void 2008-02-28 10:51  
汗,博客园的回复中,部分内容显示不出来,查看Source HTML没有问题。
如果N<=32,可以考虑用uint
如果N in (32,64],可以考虑用ulong
如果N>64,可以考虑用BitArray,......
re: 基于N层满N叉树的组合算法 Silent Void 2008-02-28 10:06  
大致思路如下:获取下一个具有同样数量的1位的更大的数
unsigned snoob(unsigned x)
{
unsigned smallest, ripple, ones;//e.g.: x=XXX0 1111 0000
smallest = x & -x; // 0000 0001 0000
ripple = x + smallest; // XXX1 0000 0000
ones = x ^ ripple; // 0001 1111 0000
ones = (ones >> 2) / smallest; // 0000 0000 0111
return ripple | ones; // XXX1 0000 0111
}
(http://www.cnblogs.com/happyhippy/archive/2007/04/24/725127.html,上面是在《Hacker's Delight》看到的一个算法)。
参考该算法,可以考虑将用位串表示集合,1表示选中,0表示未选中,从N个元素中选出M个元素,则转化为N位中有M个位为1:
最小:0…………01……1(N-M个0,M个1)
最大:1……10…………0(M个1,N-M个0)
用上面的位操作可以求得位于最小值和最大值之间M个1的组合。
如果N<=32,可以考虑用uint
如果32如果N>64,可以考虑用BitArray,不过BitArray只实现了按位的Or、And、Xor、Not等,+、>>、/等操作需要自己实现
re: 基于N层满N叉树的组合算法 jillzhang 2008-02-28 09:19  
@ffffffffffffffffffffffffffffffffffff
着兄弟也太阴了
re: 基于N层满N叉树的组合算法 Silent Void 2008-02-27 14:03  
算法有什么用?就是求组合吗?
记得有现成的o(1)算法能求每一个组合(m in n),只用了几个位操作,回头我找找看。。。

一个疑问:“10组合3的情形下每秒输出组合数为9,401,760个”,10组合3的话,也就那么百来个组合,咋输出这么多的?(不好意思,懒得看代码...)
re: 基于N层满N叉树的排列算法 Silent Void 2008-02-27 13:31  
就是求全排列?一个递归不久Over了,用这么复杂的?
re: 基于N层满N叉树的组合算法 毁于随 2008-02-27 12:54  
怎么又发了一遍
re: CSharp3的语法 怪怪 2008-02-26 23:29  
@笼民
不过是Turbo Pascal的作者 :)

@装配脑袋
脑袋兄答应的文章呢? 交稿了该 :}
re: CSharp3的语法 装配脑袋 2008-02-25 18:49  
@A.Z

这里仅仅是文法的描述,不涉及语义。比如说它无法规定for或foreach语句中的变量声明不能与同一语法环境中的其他本地变量声明冲突。
re: CSharp3的语法 Cat Chen 2008-02-25 17:59  
BNF从来都可以用这样的图来表示啊。但是不能说把语法完全弄懂了,就算懂C#了,因为如何高效的把一段逻辑写出来,如何让代码可读,这些都很重要。
re: CSharp3的语法 A.Z 2008-02-25 16:33  
c#是混合了少量的delphi的特性,但是主体和java一样是引自c++,C#和pascal语法几乎没有相似性。在类型定义上更多的参照了COM。可以看作C家族的。
re: CSharp3的语法 neoragex2002 2008-02-25 16:06  
这不就是plain BNF文法么,C#文法前身是delphi + C/C++,delphi前身是采用BNF文法著称的pascal,C#之父就是pascal/delphi之父,有啥稀奇的?
re: CSharp3的语法 a feng 2008-02-25 14:39  
不错,支持一下
re: CSharp3的语法 RoyDeng 2008-02-25 14:37  
是啊,C#语法体系何尝不是在描述其语义?凡是有语义的东西都能表述成一个图。
re: CSharp3的语法 A1 2008-02-25 14:32  
喜欢看图,最简单明了。
re: CSharp3的语法 A.Z 2008-02-25 14:23  
语义描述?
re: 基于N层满N叉树的排列算法 Anders06 2008-02-25 13:44  
不明白此种数结构有啥用途
re: 基于N层满N叉树的排列算法 hhjjk 2008-02-25 11:33  
第二个结果应该是0,2,1
共2页: 1 2 下一页