算法
文章平均质量分 78
缘
这个作者很懒,什么都没留下…
展开
-
结点尾插
尾插:employee* employee::Add(employee *Head) //尾插法添加数据{ employee *pNew,*ptr,*pt; char again; string name,sex,birthday,education,position,add,tel; int num; int wage; pt=Head; do原创 2013-01-07 21:32:24 · 346 阅读 · 0 评论 -
第一次用 stable_sort
点击打开链接# include# include# includeusing namespace std;struct DNA{ char a[55]; int num;}s[105];int fun(int n,char ch[55]){ int i,j,count; count=0; for(i=0;i<n;i++) {原创 2013-03-31 09:18:11 · 491 阅读 · 0 评论 -
单调递增子序列+二分优化
点击打开链接 # include# includeint dp[100001],a[100001];int find(int begin,int end,int num){ int x,y,m; x=begin; y=end; if(dp[x]>=num) return x; while(x<=y) { m=原创 2013-03-29 22:00:37 · 531 阅读 · 0 评论 -
rmq模板
#include #include #include #define M 50010int mx[M][17],mi[M][17],d[M];int n,t;int min(int a,int b){ return a<b?a:b;}int max(int a,int b){ return a>b?a:b;}void init(){ int i,j原创 2013-03-31 21:59:02 · 483 阅读 · 0 评论 -
Fibonacci数列
求高位时算法分析:f(n)= (1/sqrt(5))*pow((1+sqrt(5))/2,n)- (1/sqrt(5))*pow((1-sqrt(5))/2,n);这个题目就是用到这个公式,化简f(n)=n*log10((1+sqrt(5))/2)-log10(sqrt(5))+log10(1-((1-sqrt(5))/(1+sqrt(5)))^n)后面红色部分是无穷小量,可以省略。于是f(n)原创 2013-04-22 09:22:08 · 478 阅读 · 0 评论 -
某区间内1的数量
点击打开链接 解法二告诉我们1~ N中“1”的个数跟最高位有关,那我们换个角度思考,给定一个N,我们分析1~N中的数在每一位上出现1的次数的和,看看每一位上“1”出现的个数的和由什么决定。 1位数的情况: 在解法二中已经分析过,大于等于1的时候,有1个,小于1就没有。 2位数的情况: N=13,个位数出现的1的次数为2,分别为1和11原创 2013-04-19 14:12:05 · 587 阅读 · 0 评论 -
RAS加密
一、实验目的掌握并实现RSA算法。二、实验内容利用C\C++实现RSA算法的加、解密运算。具体包括:(1) a模n的逆元(2) 计算mk mod n结果(要避免出现天文数字)(3) n=43*59=2537 e=13运用(1)和(2)的结果将消息public加密和解密. 提示:将明文消息代换为数字按两个字母分组,加密后密文为0095 1649 1410原创 2014-04-18 14:40:04 · 1565 阅读 · 0 评论 -
AES算法
# include # include# includeusing namespace std;int sBox[] ={0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0x原创 2014-04-11 20:27:55 · 909 阅读 · 0 评论 -
bitmap应用及实现(哈希表)
当实现时间复杂度优化的时候,经常会用到hash表来存储一些数据,然后查找,来提高时间复杂度。如果直接设置int arr[]数组,对于大数据来说,会需要很大的空间来存储,严重影响效率。而bitmap是用位来存储数据的:如果只是表示有无,每个数据分配1位;如果表示多个,可能需要给每个数据分配多位(例如统计大数据中不重复的个数,用0、1、2来表示状态)bitmap在对数据进行排序时,其复杂度为O转载 2014-07-29 09:43:05 · 671 阅读 · 0 评论 -
求欧拉函数模板
点击打开链接int eular(int n){ int s,i; s=n; for(i=2;i*i<=n;i++) { if(n%i==0) { n/=i; s=s/i; s=s*(i-1); while(n%i==0)原创 2013-03-30 09:22:39 · 583 阅读 · 0 评论 -
Dijkstra
点击打开链接 # include# includeint a[1005][1005],b[105],c[100005],flag[1005],dis[1005];void Dijkstra(int m){ int i,j,k,min,p; for(i=0;i<m;i++) { min=1000000; for(j=1;j<=m;j++) if(min>dis[j]原创 2013-03-29 22:30:36 · 527 阅读 · 0 评论 -
逆康拓展开
点击打开链接 # include# includeint main(){ int i,j,a[15],b[15],flag[15],s=1,n; a[11]=1; for(i=10,j=1;i>=0;i--) { s=s*j; a[i]=s; //printf("%d ",a[i]); j++; }原创 2013-03-29 22:10:17 · 601 阅读 · 0 评论 -
结点前插
前插:employee* employee::Add(employee *Head) //前插法添加数据{ employee *pNew,*ptr; char again; string name,sex,birthday,education,position,add,tel; int num; int wage; do { ptr=Hea原创 2013-01-07 21:35:40 · 392 阅读 · 0 评论 -
欧拉函数
今天下午复习离散,看到了欧拉函数,以前在oj上有关欧拉函数的题,就好好的看了下,做了下题,理解了一下…… NY333题基本上弄清了欧拉函数,用的是最原始的方法,没有什么技术含量,提交上去后时间用最多,排到了最后 # includeint prim(long long x){ long long i; int flag=0; for(i=2;i*i<=x;i++) {原创 2013-01-08 16:48:58 · 431 阅读 · 0 评论 -
第一次学kmp
nyoj题5# include# includeint next[15]; char a[15],b[1005];void getnext(int len){ int k,j; j=0; k=-1; next[0]=-1; while(j<len) { if(k==-1||a[j]==a[k]) { j++; k++; next[j]=k;原创 2013-01-17 20:50:23 · 236 阅读 · 0 评论 -
欧拉图+dfs
点击打开链接 # include# includeint map[1005][1005],flag[1005],du[1005];void dfs(int n,int cur){ int i; for(i=1;i<=n;i++) { if(map[cur][i]&&!flag[i]&&cur!=i) {原创 2013-03-29 22:04:53 · 751 阅读 · 0 评论 -
广搜+优先队列
点击打开链接 # include# include# includeusing namespace std;char map[305][305],flag[305][305];struct steps{ int i; int j; int step;};int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};bool op原创 2013-03-29 22:16:43 · 688 阅读 · 0 评论 -
大数卡特兰数
int a[105][105]; //大数卡特兰数 int b[105]; //卡特兰数的长度 void catalan() //求卡特兰数 { int i, j, len, carry, temp; a[1][0] = b[1] = 1; len = 1; for(i = 2; i <= 100; i++)原创 2013-03-30 09:56:48 · 1069 阅读 · 0 评论 -
N皇后问题
点击打开链接# include# includeint b[25],c[25],d[25],count;;void find(int n,int cur){ int i; if(cur==n) { count++; return ; } for(i=1;i<=n;i++) { if(!b[i原创 2013-03-30 12:58:20 · 559 阅读 · 0 评论 -
贪心之区间选点
点击打开链接 # include# include# includeusing namespace std;struct point{ double left; double right;}s[1005];bool cmp(point x,point y){ if(x.right==y.right) { return x原创 2013-03-29 21:45:47 · 586 阅读 · 0 评论