
小算法
BJRSR
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
回溯法之马周游
#include<iostream>#include<vector>#include<algorithm>using namespace std;vector<vector<bool>> visit;int b[8][2] = { {-1,-2}, {-1,2}, {1,-2}, {1,2}, {-2,-1},...原创 2019-12-16 18:16:00 · 234 阅读 · 0 评论 -
打家劫舍
分析:#include<iostream>#include<vector>#include<algorithm>using namespace std;vector<int> s;int fn( int n){ vector<int>dp(s.size()); dp[0] = s[0]; dp[1] = s[...原创 2019-12-16 17:30:40 · 99 阅读 · 0 评论 -
旅行商问题
方法一:回溯法#include<iostream>#include<vector>#include<algorithm>using namespace std;vector<vector<int>> map;vector<bool> visit;class solution{private:...原创 2019-12-16 16:29:19 · 170 阅读 · 0 评论 -
棋盘覆盖问题 (分治)
#include<iostream>#include<vector>#include <iomanip>using namespace std;vector<vector<int>> board;int tile;/*tr: 棋盘左上角方格的行号;tc: 棋盘左上角方格的列号;dr: 特殊方格所在的行号;dc:特殊方...转载 2019-12-09 20:31:41 · 208 阅读 · 0 评论 -
动态规划 解析数字字符串
#include<iostream>#include<string>#include<vector>using namespace std;class solution{private: int dp(string s) { int j = 0,i=1; int n = s.length(); int *a = new int...原创 2019-12-02 19:02:57 · 189 阅读 · 0 评论 -
回溯法之二维数组
方法一:思路:遍历二维数组把每一个grid[i][j]='O'并且可以由dfs()检测是否可以修改。这种方法太费时间了。#include<iostream>#include<vector>using namespace std;vector<vector<char>> grid;int b[4][4] = { {-1,0}, ...原创 2019-12-02 11:10:56 · 671 阅读 · 0 评论 -
leetcode 岛屿问题
#include<iostream>#include<vector>using namespace std;vector<vector<int>> grid;int m, n;int b[4][4] = { {-1,0}, {0,1}, {1,0}, {0,-1}};class solution{ vector<...原创 2019-12-02 10:18:59 · 250 阅读 · 0 评论 -
最大团(仅限考试运用)
#include<iostream>#include<vector>using namespace std;vector<vector<int>> grid;vector<vector<int>>res;vector < bool> visit;class solution{public: vo...原创 2019-12-02 09:44:50 · 182 阅读 · 0 评论 -
回溯之电路布线
题目:一个起点到终点的路径,点的移动方向为上下左右,不能超出边界,一共有多少中路径,并列出所有路径。(递归)#include<iostream>#include<vector>#include<map>#include<string>#include<numeric>using namespace std;class ...原创 2019-11-30 20:35:43 · 586 阅读 · 0 评论 -
回溯之组合总和,字符搜索
#include<iostream>#include<vector>#include<map>#include<string>#include<numeric>using namespace std;vector<vector<int>> res;class solution{public...原创 2019-11-30 16:58:37 · 163 阅读 · 0 评论 -
回溯之数字组合问题
#include<iostream>#include<vector>#include<map>#include<string>using namespace std;vector<vector<int>> res;bool b[100] = { 0 };class solution{public: ...原创 2019-11-30 15:34:17 · 218 阅读 · 0 评论 -
给定一个数字字符串,输出对应的所有组合
#include<iostream>#include<vector>#include<map>#include<string>using namespace std;map<int, string> numtostr{ {2,"abc"}, {3,"def"}, {4,"hij"}, {5,"k...原创 2019-11-30 10:27:34 · 745 阅读 · 0 评论 -
动态规划:合并相邻的石头的最小代价
解法一:贪心(但不是最小花费)//不是最优解#include<iostream>#include<vector>#include<algorithm>using namespace std;class node{public: node(int i, int v) :i(i), v(v) {}; int i,v;};bool c...原创 2019-11-18 21:55:51 · 488 阅读 · 0 评论 -
完全平方数求最小
问题:给定一个正数n:得到最少的完全平方数组成的正数?解法一:用贪心思想,每次得到最大的完全平方数,直到平方数为1.但是这种解法没有得到最少平方数。int tanxin(int n){ int t = n; int num = 0,sum=0; int i = (int)sqrt(t); while (i >= 1) { if (sum+i*i>t) ...原创 2019-11-18 18:04:12 · 1499 阅读 · 0 评论 -
机器人问题
题目一个机器人,从左上角走到右下角,问共有几种路径?解法一:递归int findpath(int i, int j, int n){ if (i==n == 1 && j==n== 1) return 1; if (i == n || j == n) return 1; if (i > n || j > n) return 0; retu...原创 2019-11-18 15:47:26 · 346 阅读 · 0 评论 -
动态规划二
1.三角形最短路径解法一:递归(时间复杂度:指数爆炸)int find_min(int i,int j,int n){ if (i == 0 & j == 0) return a[i][j]; if (i == n) return a[i][j]; int l = find_min(i + 1, j,n); int r = find_min(i + 1, j...原创 2019-11-18 10:23:43 · 159 阅读 · 0 评论 -
动态规划入门
纸币找零:给定2,5,7三枚面额的纸币,数量足够,给出面额较大的纸币(比如给出27元),如何用最少的三种面额的数量换取27元。最优解:动态规划:1.从下而上(递归是从上至下,并且时间复杂度指数递增)2.把问题分为无数多个子问题,保证每个子问题都是最优解,总体是最优解。//a[3]={2,5,7},m=27int findmin(vector<int> a...原创 2019-11-02 23:26:07 · 91 阅读 · 0 评论 -
贪心算法的几种题型
假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币?方法一:贪心算法(能用最大面额用最大面额)int c[7] = { 9,8,7,6,5,4,3 };int b[7] = {1,2,5,10,20,50,100};void minnum(){ int money=...原创 2019-11-02 20:51:35 · 1123 阅读 · 0 评论 -
油田输油管道最小值
方法一:#include<iostream>#include<algorithm>#include<vector>using namespace std;#define inf 600.0 double findmin(vector<double> a){ sort(a.begin(), a.end()); double ...原创 2019-11-02 17:47:07 · 208 阅读 · 0 评论 -
小算法1
方法一:方法二:原创 2019-09-30 16:35:23 · 86 阅读 · 0 评论 -
全排序递归
#include<iostream>using namespace std;void swap(int &i, int &j){ int temp = i; i = j; j = temp;}void print(int arr[], int n){ for (int i = 0; i <n; i++) cout << arr...原创 2019-09-11 22:12:42 · 147 阅读 · 0 评论