摘要:
递归生成排列和组合 1 void doPermute(char str[],char result[],bool used[],int length,int level){ 2 if(level==length){ 3 cout<<result<<endl; 4 return; 5 } 6 7 for(int i=0;i<length;i++){ 8 if(!used[i]){ 9 result[level]=str[i];10 used[i]=true;11 ... 阅读全文
posted @ 2012-07-15 23:19
freewater
阅读(243)
评论(0)
推荐(0)
摘要:
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。分析:本题就是有名的约瑟夫环问题。既然题目有一个数字圆圈,很自然的想法是我们用一个数据结构来模拟这个圆圈。在常用的数据结构中,我们很容易想到用环形列表。我们可以创建一个总共有m个数字的环形列表,然后每次从这个列表中删除第m个元素。在参考代码中,我们用STL中std::list来模拟这个环形列表。由于list并不是一个环形的结构,因此每次跌代器扫描到列表末 阅读全文
posted @ 2012-07-15 21:25
freewater
阅读(359)
评论(0)
推荐(0)
摘要:
求二叉树中节点的最大距离...如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。ANSWER:This is interesting... Also recursively, the longest distance between two nodes must be either from root to one leaf, or between two leafs. For the former case, it’s the tree height. For th 阅读全文
posted @ 2012-07-15 10:14
freewater
阅读(222)
评论(0)
推荐(0)

浙公网安备 33010602011771号