算法竞赛宝典(第二部)—基础算法艺术
文章平均质量分 70
一朵风中摇曳的程序媛
这个作者很懒,什么都没留下…
展开
-
快速幂算法
如何优化幂运算:通过递归优化幂运算:快速幂运算的代码:#include<stdio.h>int mi(int a, int b){ int c; if(b == 1) { return a; } c = mi(a, b / 2); if(b % 2 == 0) { return c * c; } else { return c * c *...原创 2018-03-22 21:59:31 · 200 阅读 · 0 评论 -
0/1背包问题
0/1背包问题:给定背包的最大承重总量,每一个物品的重量为w[i],价值为c[i]。问在承重范围内能装下的最大价值为多少。代码:#include<stdio.h>#include<algorithm>#define N 1005using namespace std;int f[N][N], w[N], c[N];int main(void){ int m,...原创 2018-04-24 13:43:07 · 208 阅读 · 0 评论 -
POJ 2533 Longest Ordered Subsequence
Longest Ordered SubsequenceTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 59959 Accepted: 26861DescriptionA numeric sequence of ai is ordered if a1 &l...原创 2018-04-24 09:01:13 · 119 阅读 · 0 评论 -
POJ 2533 Longest Ordered Subsequence
Longest Ordered SubsequenceTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 59959 Accepted: 26861DescriptionA numeric sequence of ai is ordered if a1 <...原创 2018-04-24 08:56:58 · 122 阅读 · 0 评论 -
地盘划分
地盘划分:此题是一个典型的递归算法,每一次都是按照行数与列数中较小的那一个来切割。我的代码:#include<stdio.h>void work(int n, int m, int sum){ if(n > m) { work(n - m, m, sum + 1); } else if(n < m) { ...原创 2018-04-13 11:43:04 · 794 阅读 · 0 评论 -
递归算法
什么是递归算法:程序调用自身的编程技巧称为递归(recursion)。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大滴减少了程序的代码量。...原创 2018-04-13 11:32:54 · 521 阅读 · 0 评论 -
二分搜索
分治算法:分治算法就是把一个复杂的问题分成两个相同或相似的子问题,再把子问题分成更小的子问题......知道最后的子问题可以简单地求解,原问题的解即子问题的解的合并。典型的分治算法就是二分搜索:二分搜索递归的代码:#include<stdio.h>int key, a[20];int search(int bot, int top){ int mid; if(top &g...原创 2018-04-12 13:22:38 · 155 阅读 · 0 评论 -
POJ 2083 fractal
FractalTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 11043 Accepted: 4941DescriptionA fractal is an object or quantity that displays se...原创 2018-04-17 13:48:43 · 435 阅读 · 1 评论 -
拆分自然数
拆分自然数:任何一个大于1的数,总能够拆分成若干个小于n的自然数之和,求出所有拆分后的情况。递归算法:#include<stdio.h>int num[20];void print(int j){ int i; printf("%d = %d ", num[0], num[1]); for(i = 2; i <= j; i ++) { ...原创 2018-04-15 18:36:48 · 2149 阅读 · 0 评论 -
数的查找—寻找第k小的数的位置
相关代码:#include<stdio.h>int m, k, a[40], b[40];void Swap(int *p, int *q, int *i, int *j) //错误第一处,忘记了如果想要通过修改形参而改变实参,一定要加在形参上加*,实参加&。{ int t1, t2; t1 = *p; *p = *q; *q = t1; t2 = ...原创 2018-04-09 22:21:37 · 647 阅读 · 0 评论 -
poj3273 Monthly Expenses
Monthly ExpenseTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 32155 Accepted: 12113DescriptionFarmer John is an astounding accounting wizard and ha...原创 2018-04-09 21:05:39 · 291 阅读 · 0 评论 -
求N的阶乘末尾有几个0
翠花,上代码:核心代码:#include<stdio.h>int solve(int n){ int ans = 0; while(n > 0) { ans += n / 5; n /= 5; } return ans;}int main(void){ int n; scanf("%d", &n); printf("%d\n", so...原创 2018-04-01 19:41:39 · 957 阅读 · 0 评论 -
POJ 1650 Integer Approximation 近似整数
Integer ApproximationTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5801 Accepted: 1957DescriptionThe FORTH programming language does not support floating-...原创 2018-03-21 23:21:20 · 443 阅读 · 0 评论 -
POJ 2503 Babelfish (神族文字)
BabelfishTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 47332 Accepted: 19828DescriptionYou have just moved from Waterloo to a big city. The ...原创 2018-03-21 18:04:24 · 634 阅读 · 0 评论 -
SDNUOJ 1033 采药
1033.采药 Time Limit: 1000 MS Memory Li...原创 2018-04-24 16:41:39 · 295 阅读 · 0 评论