
算法
文章平均质量分 70
寻隐者不遇2016
这个作者很懒,什么都没留下…
展开
-
摘抄:欧几里得算法证明过程
GCD(A,B) = GCD(B, A mod B);// A > B 且 R= A mod B, R 不等于 01.1 证明GCD(A,B) 能被 C 整除,C = A-BA = X * GCD(A,B);B = Y * GCD(A,B);C = A - B = X * GCD(A,B) - Y * GCD(A,B);C = (X - Y) * GCD(A,B);1.2...原创 2020-02-07 14:16:01 · 503 阅读 · 0 评论 -
又见01背包
时间限制:1000 ms | 内存限制:65535 KB | 难度:3描述 有n个重量和价值分别为wi 和 vi 的 物品,从这些物品中选择总重量不超过 W 的物品,求所有挑选方案中物品价值总和的最大值。 1 1 1 1 输入 多组测试数据。 每组测试数据第一行输入,n 和 W ,接下来有n行,每行输入两个数,代表第i个物品的w原创 2015-06-06 16:04:30 · 476 阅读 · 0 评论 -
【C语言/算法之 01 背包】完全背包
[题目]有 N 种物品和一个容量为 V 的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。[基本思路]这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件⋯⋯等很多种。如果仍然按照解0原创 2015-06-04 19:57:49 · 994 阅读 · 0 评论 -
【C语言/算法之 01 背包】基础版
[01背包问题]:设有一个背包可以放入的物品重量为V,现有n件物品,重量分别是 c1,c2,c3,…cn,价值分别为 w1,w2,w3,…wn。问能否从这n件物品中选择若干件放入背包中,使得放入的物品的价值和最大? [基本思路]:01 背包问题 0 表示不放入,1 表示放入。用子问题定义状态:即 f[i][v] 表示前i件物品恰放入一个容量为 v 的背包可以获取得到的最大价原创 2015-06-04 15:57:52 · 1059 阅读 · 0 评论 -
【C语言】最长子序列问题求解
二维最长递增子序列问题求解思路 以每个点为起点的最长递增子序列 3246211815247674 MAZE[SIZE][SIZE] – 对应原创 2015-05-28 16:51:59 · 1819 阅读 · 0 评论 -
【算法】 动态规划 最佳路径求解
动态规划题目如下:73 88 1 82 7 4 44 5 2 6 5上图给出了一个数字三角形。从三角形的顶部到原创 2014-03-24 14:08:38 · 3451 阅读 · 0 评论 -
【算法】 递归求解整数划分
描述 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。求正整数n的不 同划分个数。 例如正整数6有如下11种不同的划分: 6; 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+1,2+1+1+1+1; 1+1+1+1+1+原创 2014-04-20 17:13:43 · 1485 阅读 · 1 评论 -
【算法】 组合数问题非递归解法
组合数时间限制:3000 ms | 内存限制:65535 KB难度:3描述 找出从自然数1、2、... 、n(0输入 输入n、r。 输出 按特定顺序输出所有组合。特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。 样例输入 5 3样例输出 54354254153253152143243142132原创 2014-04-22 11:18:52 · 2679 阅读 · 0 评论 -
【C 语言】DFS 解决马最少跳步次数
一道简单的C 语言题目, 给定特定长宽的矩形,给定起点终点,问最少几次可以从起点跳到终点。要求 必须按照象棋中马的跳走方式,如果不能跳到,则输出 -1 分析: 两种方法:1. BFS,将一次跳跃到达的位置,存入队列中,再通过出队检查是否是终点。如果不是终点,继续将出队点八个方向的点入队,直到找到终点位置。2. DFS,DFS的思路比较简单,但较好费资源。遍历出所有可以到原创 2015-04-22 19:34:00 · 1258 阅读 · 0 评论 -
【算法】 擅长排列的小明
描述小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。输入第一行输入整数N(1每组测试数据第一行两个整数 n m (1输出在1-n中选取m个字符进行全排列,按字典序全部输出,每种排列占原创 2014-04-09 11:07:25 · 816 阅读 · 0 评论 -
【算法】 括号匹配(二)
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的 输入 第一行输入一个正整数N,表示测试数据组数(N每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100原创 2014-04-03 11:25:51 · 1241 阅读 · 0 评论 -
【算法】 判断括号是否匹配
描述现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])样例输出NoNoYes题目分析:这是一道典型的利用栈求解的题目,碰到左括号入栈,碰到有括号时候做判断,如果栈顶为与它匹原创 2014-04-02 09:10:56 · 3940 阅读 · 0 评论 -
【算法】动态规划 最长上升子序列
/* * * 找出最长上升子序列的个数 * 并输出一个最长子序列 * */#include #define MAX_STR_SIZE 50int main(){ int i = 0; int j = 0; int Max = 0; int Maxlocate = 0; char str[MAX_STR_SIZE]; int lque[MAX_STR_SIZE] = {0原创 2014-03-24 16:27:39 · 1192 阅读 · 0 评论 -
【算法】 动态规划 最长公共子序列
最长公共子序列描述#include #include #define MAX_LEN 1001#define maxValue(a,b) ((a)>(b) ? (a) : (b))int lcs[MAX_LEN][MAX_LEN] = {0,};int main(){ int N; char strA[MAX_LEN]; char strB[MAX_LEN]; sc原创 2014-03-25 17:58:27 · 854 阅读 · 0 评论