
经典算法
XD灬
路漫漫其修远兮,吾将上下而求索
展开
-
Gauss消去法求线性方程组
给定线性方程组的系数,求解方程组是否有解。1,找到系数矩阵行列为(k, k)的块绝对值最大的数作为主元,记下行和列,分别与第k列交换,与第k行交换,(行跟行交换,列跟列交换)。2,交换后,主元所在的行每一个元除以主元的值,使得主元所在的位置为1,常数列也除以主元的值。3,进行初等行变换,使得主元所在的列的其他元为0。4,判断系数矩阵和增广矩阵的秩是否相同,相同,有解,不相同,无解。原创 2015-08-21 11:35:10 · 1757 阅读 · 0 评论 -
斐波那契数列——矩阵的幂求解
题目:斐波那契数列的递推公式如下:F(0) = 0;F(1) = 1;F(n + 2) = F(n + 1) + F(n);求数列的第N项的值对10000取余的结果。( 0求解斐波那契数列,如果N比较小的情况下,可以直接打表求解,但是对于N很大的情况下,并不适用。所以,有些人会想到高精度计算,但是,N达到10^5以上时,时间复杂度难以想象,每计算一个数,需要进行原创 2015-07-30 19:35:22 · 1490 阅读 · 0 评论 -
排序算法!~
排序算法很多,这里主要列出几个比较经典的排序算法。最开始我们最先接触到的排序算法是冒泡排序,冒泡排序是一种比较简单的排序算法,重复的扫描排序过的数组,直到没有数字交换的情况。时间复杂度O(n^2)。冒泡排序:void Bullesort(int a[], int n){ int i, j, temp; for(i = 0; i < n; i++) { for(j = 0;原创 2015-07-08 09:45:30 · 866 阅读 · 0 评论 -
经典算法~~快速求幂的方法
快速的求幂的方法原理:以下以求a的b次方来介绍把b转换成二进制数。该二进制数第i位的权为例如 11的二进制是101111 = 2³×1 + 2²×0 + 2¹×1 + 2º×1因此,我们将a¹¹转化为算以上的来自百度百科:http://baike.baidu.com/link?url=o1UFGS2CuuAs原创 2015-03-16 22:33:06 · 6664 阅读 · 0 评论 -
杭电ACM——1998奇数魔方阵!
魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n2的平方的n×n的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。如3×3的魔方阵:8 1 63 5 74 9 2魔方阵的排列规律如下:⑴将1放在第一行中间一列;⑵从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列原创 2015-03-08 10:50:29 · 838 阅读 · 0 评论 -
经典算法~~迷宫---用栈模拟递归实现
这个算法,用邻接矩阵表示迷宫,主要的思路是:从起点出发,寻找可以走的位置,将横纵坐标压入栈中,当走入死胡同时,读取栈中的横纵坐标,标记该位置,避免再次进入死胡同中,然后再寻找其他的路线,直到找到出口。这种一步步回退的技巧叫做回溯,回溯的基本原理是从某一个点开始,找不到解时(在迷宫中,就是进入了死胡同),就回到前一个结点,再次重新从这个点出发尝试下一个未尝试的可能路径。下面是代码实现:原创 2015-03-04 20:20:18 · 700 阅读 · 0 评论 -
经典算法~~汉诺塔
经典的算法,用递归便可以实现。老到掉牙的算法,但是数不可以很大,太大的话,会一直输出,因为步骤数实在是太大了!~下面是代码:# include void han(char x, char y, char z, int n){ if(n == 1) printf("num %d form %c to %c\n", n, x, z); else { han(x, z, y原创 2015-03-04 19:01:56 · 601 阅读 · 0 评论 -
经典算法 ~~巴斯卡三角形
巴斯卡三角形,说白了就是杨辉三角,只是空了一些的空格而已!~主要的问题是空格的输出,其他的就很简单了!~下面是代码:# include int main(){ int a[100][100], i, j, k, n; scanf("%d", &n); for(i = 0; i < n; i++) for(j = 0; j < 2 * n + 1; j++) a[i][原创 2015-03-04 18:49:00 · 1045 阅读 · 0 评论