随笔分类 -  算法

摘要:一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。 输入格式: 输入在一行中给出一个正整数 N(1)。 输出格式: 首先在第 1 行输出 阅读全文
posted @ 2021-06-01 09:01 ....陈陈陈陈 阅读(431) 评论(0) 推荐(0)
摘要:给定两个序列X=ABCBDAB, Y=BDCABA,求X和Y的最长公共子序列 #include<stdio.h> #include<string.h> int max(int a,int b){ if(a>b)return a; else return b; } void length(char * 阅读全文
posted @ 2021-05-27 15:44 ....陈陈陈陈 阅读(195) 评论(0) 推荐(0)
摘要:给定一个序列,求这个序列的最长上升子序列的长度,并输出这个最长上升子序列,题目保证,最长上升子序列只有一个。 我这里的思路是再设一个数组b,如果a[k]>a[i],则b[k]=b[i]+1.然后最后找到b中最大值的位置,然后再慢慢倒推回去找,得到数组 #include<stdio.h> int ma 阅读全文
posted @ 2021-05-27 15:37 ....陈陈陈陈 阅读(75) 评论(0) 推荐(0)
摘要:给定n个物品和一背包,物品i的重量是wi,其价值为vi,背包的容量为c。问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 主要就是考虑背包剩余的容量,以及要不要放入物品 #include<stdio.h> int max(int a,int b){ if(a>b)return a; r 阅读全文
posted @ 2021-05-27 15:23 ....陈陈陈陈 阅读(46) 评论(0) 推荐(0)
摘要:对于给定序列a1,a2,a3……an,寻找它的某个连续子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。 #include<stdio.h> //找到数组b中最大的值 int max(int *b,int n){ int max=b[0]; 阅读全文
posted @ 2021-05-27 15:15 ....陈陈陈陈 阅读(168) 评论(0) 推荐(0)
摘要:在计算矩阵连乘积时,加括号的方式对计算量有影响。 例如有三个矩阵A1,A2,A3连乘,它们的维数分别为 10*100,100*5,5*50。用第一种加括号方式(A1A2)A3计算,则所需数乘次数为10*100*5+10*5*50=7500。用第二种加括号方式A1(A2A3)计算,需要100*5*50 阅读全文
posted @ 2021-05-27 15:06 ....陈陈陈陈 阅读(346) 评论(0) 推荐(0)
摘要:问题描述 在数据加密和数据压缩中长需要对特殊的字符串进行编码。给定的字母表由26个小写英文字母组成,即A={a,b,c,…,z}。该字母表产生的升序字符串是指字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字母最多出现1次。例如,a、b、ab、bc、xyz等字符串都是升序字符串。 阅读全文
posted @ 2021-04-28 16:59 ....陈陈陈陈 阅读(138) 评论(0) 推荐(0)
摘要:问题描述 一本书的页码从自然数1开始编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0. 例如,第8页用数字8表示,而不是08或者008之类。 数字统计问题要求对给定书的总页码n,计算出书的全部页码中分别出现了多少次数字0,1,2,…,9。 解法一: 这种算法就是老老实实的 阅读全文
posted @ 2021-04-28 15:54 ....陈陈陈陈 阅读(207) 评论(0) 推荐(0)
摘要:算法概述 运用递归的思想,任取一个字符打头,对后面n-1个数进行全排列,要求n-1个数的全排列就任选一个数不懂,对后面n-2个数的全排列.....直到只有一个字符了,即找到了出口,输出字符串。 而避免重复元素就要多一个判断条件,判断该字符是否和前面的数组里的字符相等,相等的话就直接用continue 阅读全文
posted @ 2021-04-28 11:07 ....陈陈陈陈 阅读(81) 评论(0) 推荐(0)