- 浏览: 509902 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jkxydp:
算法运行的结果根本就不对。
BM算法. -
soarwindzhang:
感谢博主的分享,我今天看了您的UFSET非递归的路径压缩时感觉 ...
并查集 -
zhangning290:
楼主好像只考虑了坏字符规则,。没有考虑好后缀
BM算法. -
lsm0622:
文字描述有错误 误导新学者
求有向图的强连通分量(scc):Tarjan算法 -
knightchen:
博主,你太强了!这篇文章对我学习C++多线程很有帮助!谢谢
并发学习之一_windows下ZThread在CodeBlocks上的安装与配置
1,借助于容器set实现.
2,用数组实现
3,用链表实现
4,用二叉搜索树实现
5,用比特位向量实现.
#include <iostream> #include <set> #include <ctime> using namespace std ; class IntSetSTL { public: IntSetSTL(int max,int num){} int size(){ return S.size(); } void insert(int t){ S.insert(t); } void report(int* v) { int i=0; for(set<int>::iterator ite=S.begin();ite!=S.end();ite++) v[i++]=*ite; } private: set<int> S; }; void generateSetSTL(int m,int maxVal) { int* v=new int[m]; IntSetSTL stl(maxVal,m); while(stl.size()<m) stl.insert(rand()%(1+maxVal)); stl.report(v); for(int i=0;i<m;i++) cout<<v[i]<<endl; cout<<endl; delete[] v; } int main () { srand(time(0)); const int maxVal=100; const int m=10; generateSetSTL(m,maxVal); return 0 ; }
2,用数组实现
#include <iostream> #include <ctime> using namespace std ; class IntSetArray { public: IntSetArray(int maxVal,int m) { a=new int[m+1]; //设置一个哨兵 n=0; a[0]=maxVal; } int size(){ return n; } void insert(int t) { int i; for(i=0;a[i]<t;i++) ; if(a[i]==t) return; for(int j=size();j>=i;j--) a[j+1]=a[j]; a[i]=t; n++; } void report(int* v) { for(int i=0;i<size();i++) v[i]=a[i]; } private: int* a; int n; }; void generateSetArray(int m,int maxVal) { int* v=new int[m]; IntSetArray array(maxVal,m); while(array.size()<m) array.insert(rand()%maxVal); array.report(v); for(int i=0;i<m;i++) cout<<v[i]<<endl; cout<<endl; delete[] v; } int main () { srand(time(0)); const int maxVal=100; const int m=10; generateSetArray(m,maxVal); return 0 ; }
3,用链表实现
#include <iostream> #include <ctime> using namespace std ; struct Node { Node(int i,Node* p):val(i),next(p){} int val; Node* next; }; class IntSetList { public: IntSetList(int maxVal,int m) { sentinel=head=new Node(maxVal,NULL); n=0; } int size(){ return n; } void insert(int t) { head=rinsert(head,t); } void report(int* v) { int i=0; for(Node* p=head;p!=sentinel;p=p->next) v[i++]=p->val; } private: //这里nb的递归 Node* rinsert(Node* p,int t) { if( t>(p->val) ) p->next=rinsert(p->next,t); else if( t<(p->val) ) { p=new Node(t,p); n++; } return p; } Node* head; //哨兵节点 Node* sentinel; int n; }; void generateSetList(int m,int maxVal) { int* v=new int[m]; IntSetList list(maxVal,m); while(list.size()<m) list.insert(rand()%maxVal); list.report(v); for(int i=0;i<m;i++) cout<<v[i]<<endl; cout<<endl; delete[] v; } int main () { srand(time(0)); const int maxVal=100; const int m=10; generateSetList(m,maxVal); return 0 ; }
4,用二叉搜索树实现
#include <iostream> #include <ctime> using namespace std ; struct Node { Node(int i):val(i),lchild(NULL),rchild(NULL){} int val; Node* lchild; Node* rchild; }; class IntSetBST { public: IntSetBST(int maxVal,int m):root(NULL),n(0){} int size(){ return n; } void insert(int t) { root=rinsert(root,t); } void report(int* x) { v=x; vn=0; traverse(root); } private: //这里nb的递归 Node* rinsert(Node* p,int t) { if(p==NULL) { p=new Node(t); n++; } else if( t>(p->val) ) { p->rchild=rinsert(p->rchild,t); } else if( t<(p->val) ) { p->lchild=rinsert(p->lchild,t); } return p; } void traverse(Node* p) { if(p==NULL) return; traverse(p->lchild); v[vn++]=p->val; traverse(p->rchild); } Node* root; int n; int *v,vn; }; void generateSetBST(int m,int maxVal) { int* v=new int[m]; IntSetBST bst(maxVal,m); while(bst.size()<m) bst.insert(rand()%maxVal); bst.report(v); for(int i=0;i<m;i++) cout<<v[i]<<endl; cout<<endl; delete[] v; } int main () { srand(time(0)); const int maxVal=100; const int m=10; generateSetBST(m,maxVal); return 0 ; }
5,用比特位向量实现.
#include <iostream> #include <ctime> using namespace std ; class IntSetBitVector { public: IntSetBitVector(int maxVal,int m):hi(maxVal),n(0),x(new int[maxVal/BITSPERWORD+1]) { for(int i=0;i<hi;i++) clear(i); } int size(){ return n; } void insert(int t) { if(!test(t)) { set(t); n++; } } void report(int* v) { int j=0; for(int i=0;i<hi;i++) { if(test(i)) v[j++]=i; } } private: enum{ BITSPERWORD=32, SHIFT=5, MASK=0x1f}; void set(int i) { x[i>>SHIFT]|=(1<<(i&MASK)); } void clear(int i) { x[i>>SHIFT]&=~( 1<<(i&MASK) ); } int test(int i) { return x[i>>SHIFT]&(1<<(i&MASK)); } int n,hi; int* x; }; void generateSetBitVector(int m,int maxVal) { int* v=new int[m]; IntSetBitVector bitVector(maxVal,m); while(bitVector.size()<m) bitVector.insert(rand()%maxVal); bitVector.report(v); for(int i=0;i<m;i++) cout<<v[i]<<endl; cout<<endl; delete[] v; } int main () { srand(time(0)); const int maxVal=100; const int m=10; generateSetBitVector(m,maxVal); return 0 ; }
发表评论
-
称球问题
2010-12-16 14:13 1266[节选]http://mindhacks.cn/2008/06 ... -
平均要取到第几个随机数才会让序列第一次下降
2010-12-15 12:05 1284[转载]http://www.matrix67.com/blo ... -
输出一个数列的逆序数
2010-12-10 20:39 26801,这个问题算法导论讲归并排序时,提到过。 找到一个实现代码, ... -
给出前序和中序序列,输出后序序列
2010-12-10 11:46 15191,给出一个实现代码: #include <stdi ... -
输入是一个n*m的矩阵,要求找到其中最大的全0字矩阵
2010-11-25 12:16 15221,分析: 这个题其实就是最大子矩阵,只不过把0的权设为1,其 ... -
一些常见的海量数据处理题目
2010-11-25 11:23 1593很长时间没有更新blog了,先唠叨两句. 这段时间发生了几件不 ... -
不限数目的1、5、10、20、50面额的纸币,有多少种方法凑出100元
2010-09-21 17:22 20111,有不限数目的1、5、10、20、50面额的纸币,有多少种方 ... -
输出1到最大的N位数
2010-09-01 14:23 13241,题意: 输入数字n,按顺序输出从1最大的n位10进制数。比 ... -
找出数组中两个只出现一次的数字
2010-08-26 13:13 18481,题意: 一个整型数组里除了两个数字之外,其他的数字都出现了 ... -
字符串的逆序
2010-08-26 11:23 8311,老题目了,给个自己的版本. #include < ... -
寻找丑数
2010-08-26 10:57 31161,题意: 把只包含质因子2、3和5的数称作丑数(Ugly N ... -
寻找连续序列,使其和等于n
2010-08-26 10:15 11781,分析: 首尾两个游标. 如果当前sum < n, 尾 ... -
n个筛子的和出项的次数
2010-08-25 15:47 8401, 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S ... -
从文件中随即提取一个字符串
2010-05-12 12:54 767算法思路: 读入第一个:概率1保留。 读入第二个:1/2保留上 ... -
编写一些代码,确定一个变量是有符号数还是无符号数。
2010-05-12 12:53 9391,参数是一个值: #define ISUNSIGNED(va ... -
寻找移位有序数组的转折点
2010-05-09 00:22 14351,题意: 原来一个有序数组,分成前后两部分并将两部分交换得到 ... -
递归返回最大值
2010-05-06 19:20 7981,实例代码: #include<iostream& ... -
设定哨兵,返回最大值
2010-05-06 19:16 10281,精炼的代码总是那么迷人. 实例代码: #include ... -
最长平台
2010-05-06 19:01 9851,已知一个已经从小到大排序的数组,这个数组中的一个平台(Pl ... -
返回'+','-'表达式的计算结果
2010-05-04 17:07 7421,实例代码: #include <iostream ...
相关推荐
与正态分布类似,但会截去平均值之外超过2个标准差的值,确保所有生成的值都在可接受范围内。 掌握这些基本操作对于使用TensorFlow进行机器学习模型的搭建至关重要。它们不仅可以用于初始化模型参数,还可以在模型...
- `tf.random.uniform()`:生成指定范围内的均匀分布随机数,例如 `tf.random.uniform([4, 5], minval=0, maxval=1)` 生成一个 4x5 的张量,每个元素在 [0, 1) 区间内。 3. 张量操作: - `tf.cast()`:将张量转换...
- 第二行包含m个整数,表示已排序的数组元素。 - 第三行包含一个整数x,表示待插入的整数。 **输出格式**: 输出一个整数,表示x应该被插入的位置。 **示例**: - **输入样例**: - 10 - 9 19 20 23 56 78 90 ...
下面详细介绍如何使用VBA编写一个函数`AbsMax`来计算选定范围内的数据的绝对值最大值: ```vba Function AbsMax(rng As Range) As Double Dim cell As Range Dim maxVal As Double ' 初始化最大值为0 maxVal ...
代码中包含一个名为`Maxval`的函数,用于找出数组中最大连续出现的相同值。这个函数首先初始化几个变量,然后遍历数组,使用一个计数器来跟踪当前元素与下一个元素是否相等。当遇到不同的元素时,它会更新最大连续值...
在MATLAB中,开发一个“TruthTableMatrix生成器”是为了帮助用户快速生成任意数量变量的逻辑真值表。真值表是逻辑运算和布尔代数中的一个重要工具,它列出所有可能的输入组合及其对应的输出结果。这个生成器适用于...
1. 使用InputBox生成随机数组:根据用户输入的数据个数(或默认值),生成包含两位数的随机整数数组,并显示在Text1文本框中。 2. 查找并交换元素:在Text1数组中查找最大和最小值,将最大值与数组首元素交换,...
给定一个链表和两个参数s和m,从第s个节点开始报数,数到第m个节点将其删除,然后从下一个节点重新开始报数,直到链表为空。解决这个问题可以使用两个指针,一个用于报数,一个用于记录当前节点,当报数到达m时,...
在这个问题中,我们要用递归来处理单链表,并实现三个主要功能:找到链表中的最大值、计算链表的节点数量以及求所有整数的平均值。下面将详细讨论这些知识点。 首先,链表是一种基本的数据结构,由一系列节点组成,...
最大颜色值(Maxval)定义了颜色范围,通常在0到255之间;像素数据按照行优先顺序存储,每像素由红、绿、蓝三个分量表示,每个分量用一个整数表示。 曼德布罗特分形集是通过迭代函数系统生成的,其基本思想是计算每...
- **序列**:用于创建特定范围内的数值张量。 - `tf.linspace(start, stop, num, name=None)`: 创建一个等差数列。 - `tf.range(start, limit=None, delta=1, name='range')`: 创建一个等差数列。 - **随机张量**...
基数排序的基本思想是通过一趟排序将待排记录分隔成独立的若干个子序列,每个子序列都是相应关键字值的记录,此时,就可以分别对这些子序列进行排序,所有子序列排序完成后,整个序列就变为有序序列。它通常使用“桶...
randomValue = TRIRND(minVal, topVal, maxVal); 分布定义为: - 最小值和最大值- “最高”值,概率... 一种对小范围内的大量随机点(maxVal-minVal)有效,而另一种对合理数量的点的大范围有效。 对于大范围,关于
在LeetCode的第152题“乘积最大子序列”中,我们面临的挑战是找到一个整数数组中乘积最大的连续子序列。这个题目属于动态规划和数组处理的范畴,是Java编程中常见的算法问题。下面将详细介绍解决这个问题的关键知识...
它通过对整数的每一位进行排序来达到整体序列的有序化。该算法的特点在于它不是通过元素间的相互比较来进行排序,而是通过按数字的每一位(从最低位到最高位)进行排序,从而实现整个序列的排序。 #### 二、基数...
- `tf.random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name=None)` — 创建一个具有均匀分布的随机值的张量。 - `tf.random_shuffle(value, seed=None, name=None)` — 随机排列一个...
在MATLAB中,寻找矩阵中n个绝对值最大的数是一个常见的任务,这在数据分析、数值计算和各种数学问题中都有应用。以下是如何在MATLAB中实现这个功能的详细步骤及相关的MATLAB知识点。 1. **矩阵操作**: 在MATLAB中...
// 生成 0 到 9 之间的随机整数 ``` ### 40. 日期操作 使用 `Date` 对象进行日期和时间的操作。例如: ```javascript var today = new Date(); console.log(today.getTime()); // 当前时间戳 console.log(today....
使用tf.range函数可以生成一个整数范围的矩阵,类似于Python的range函数。它接受起始值、结束值和步长。例如: ```python v7_1 = tf.range(10, 20, 3) ``` 这段代码创建了一个从10开始到20结束(不包括20),步长为3...
- **`tf.range(start, limit=None, delta=1, name='range')`**:生成一个整数序列。 #### 随机张量 (Random Tensors) - **示例**: - **`tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=...