算法
对方感受到
走自己喜欢的路,让别人说去
展开
-
算法:最大公约数、斐波那契
其实求最大公约数有很多种方法一下均以C++实现欧几里得算法记得在学小学的时候就会知道求两个数(m,n)的最大公约数 因为m=k*n+ p,其中n为除数,k为商,p为余数即m%n。从式子可以看出m,n的最大公约数也是k*n和p的最大公约数,因为其最大公约数小于等于n,所以这个最大公约数也是n,p的最大公约数,因此就出现了辗转相除发。在计算机中我们是这样子实现的。int g原创 2012-09-04 14:53:20 · 1602 阅读 · 0 评论 -
实现两个有序链表的合并
如题,实现两个带头链表的合并,返回合并后的链表的头指针#includeusing namespace std;struct Node{ //节点类型int data;Node *next; };Node * pSort(Node *a,Node *b) //带有头指针的链表 {if(a->next==NULL)return b;if(b-原创 2012-10-21 22:33:35 · 546 阅读 · 0 评论 -
计算一个数的二进制的存在的一的位数
如题:这里提出两种实现方法1、不需要通过循环int CNByteNum(int x){ x=(x & 0x55555555) + ((x>>1) & 0x55555555); x=(x & 0x33333333) + ((x>>2) & 0x33333333); x=(x & 0x0F0F0F0F) + ((x>>4) & 0x0F0F0F0F); x=原创 2012-10-21 22:29:36 · 556 阅读 · 0 评论 -
将无符号整形每一位都翻转过来
最近笔试的时候碰到了这样的题目,但是不会做,回来查了一下书之后,其实现与君共享。如 00000000 00000000 00000000 00000011 反置后为 11000000 00000000 00000000 00000000 不需要通过循环unsigned rev(unsigned x){x=(x & 0x55555555) > 1;x翻译 2012-10-21 22:27:37 · 996 阅读 · 0 评论 -
密码学
1、Caesar密码就是移位法,把现在明文字母往后移动3位,密文C=(p+3)mod 262、playpair密码是基于一个5X5的矩阵的,使用一个关键字构造。(从左到右,上到下)翻译 2013-01-13 09:44:08 · 616 阅读 · 0 评论 -
回旋数的求解
回旋数就是从中间的1开始然后围绕着这个1,按自然数的增长形式回旋1,如:43444546474849 42212223242526 4120原创 2012-10-21 22:42:34 · 1186 阅读 · 0 评论 -
贪吃回旋蛇n
int **arr = new int*[n]; for (int m = 0; m < n; ++m) arr[m] = new int[n]; bool horizontal = true, reversed = false; int i = 0, j = 0; for (int k = 1; k < n*n + 1; ++k) { if (horizontal) {原创 2016-09-23 14:35:45 · 851 阅读 · 0 评论