算法
silent碎月
这个作者很懒,什么都没留下…
展开
-
算法思想-动态规划
动态规划动态规划(dynamic programing)应用于子问题重叠的情况, 即不同的子问题具有公共的子子问题通常按如下四步设计动规算法:刻画一个最优解的结构特征递归地定义最优解的值计算最优解的值, 通常采用自底向上法利用计算出的信息构造最优解钢条切割假设有一长度为i钢条, 销售价格表如下长度12345678910价格1589101717202430求利润最高的切割方式过程分析长度为n的钢条一共有2^(n- 1)种原创 2021-08-02 09:38:49 · 149 阅读 · 0 评论 -
博弈论--------- ICG黑板异或游戏 leetcode-810
很明显的ICG博弈, 若异或和为零则 数组中有偶数个相同的数两个玩家都会去消除重复的数来保证消除后结果不为零最终剩下一堆不重复的数如此对局进行至n次, 全部消除, 对局结束。因为会对局n次, n为偶数最终bob失败, alice获胜。若异或和不为零,则数组中有偶数个相同的数与不相同的数两个玩家可以先消除不相同部分和相同的部分来保证结果不为零若相同的数数量为n, 不相同的数数量为m对局进行n+ m次, 全部消除, 对局结束若n+ m为偶数, 则bob失败, alice胜利若为奇数,.原创 2021-05-22 21:15:46 · 223 阅读 · 1 评论 -
求最大子序列和的那些事
第一种算法: 穷举int MaxSubsequenceSum(const int A[], int N){ int ThisSum, MaxSum, i, j, k; MaxSum = -2147483647; for (i = 0; i < N; i++) for (j = i; j < N; j++) { ThisSum = 0; for (k = i; k <= j; k++) ThisSum += A[k]; if(ThisSum &g原创 2021-05-19 18:30:56 · 102 阅读 · 0 评论 -
洛谷5月月赛Ⅱ 比赛总结
因为对树的知识尚不熟悉, 所以只完成了A与B题。A.凑数这道题算是比较简单的, 通过输入的n去计算最大等差数列和最小等差数列, 如果所求数在这两个值之间, 则必然可求#include <stdio.h>_Bool Sum(unsigned long long n,unsigned long long k,unsigned long long s);int main(void){ long t; unsigned long long n, k, s; scanf("%ld原创 2021-05-16 14:36:39 · 221 阅读 · 0 评论 -
算法基础------算法导论第三章
二分查找伪代码如下:Type Search(array, val, low, high){ if(low > high) return nil; mid = (low + high) / 2; if(val == A.mid) return mid; if (val < A.mid) return Search(array, val, low, mid - 1); else return Search(array, val, mid+ 1, high);}原创 2021-04-23 23:50:53 · 103 阅读 · 0 评论 -
leetcode 只出现一次的数
本题用到离散数学方面知识int singleNumber(int* nums, int numsSize){ unsigned one = 0, two = 0; for (int i = 0; i < numsSize; i++) { one = (one ^ nums[i]) & (~two); two = (two ^ nums[i]) & (~one); } return one;}...原创 2021-04-21 21:36:42 · 75 阅读 · 0 评论 -
洛谷-数独解算
利用深度搜索, 进行检索#include <stdio.h>#include <string.h>#include <stdlib.h>int sudoku[10][10];_Bool row[10][10] = {0};_Bool column[10][10] = {0};_Bool square[10][10] = {0};void DepthFirstSearch(int i, int j);void ShowSquare(void);int原创 2021-04-18 19:59:18 · 151 阅读 · 0 评论