
基础算法
KRYON!
这个作者很懒,什么都没留下…
展开
-
[蓝桥杯]基础练习 特殊回文数
#include<iostream>#include<vector>using namespace std;/*打印 10000 ~ 1000000里所有回文数及对应各个位之和 反转==它本身为回文数int main(){ vector<int>cnt; for(int i = 10000; i < 1000000; i++) ...原创 2020-02-27 12:01:02 · 1225 阅读 · 0 评论 -
[蓝桥杯]基础练习 十进制转十六进制
#include<iostream>#include<string>#include<algorithm> using namespace std;int main(){ int num = 0; cin>>num; if(num == 0) { cout<<"0"; return 0; } stri...原创 2020-02-26 23:21:08 · 104 阅读 · 0 评论 -
[蓝桥杯]基础练习 十六进制转十进制
#include<iostream>#include<string>#include<vector>using namespace std;int main(){ string num; cin>>num; int len = num.size(); long long res = 0; for(int i = 0; i &...原创 2020-02-26 22:54:06 · 113 阅读 · 0 评论 -
[蓝桥杯]基础练习 十六进制转八进制
16进制转成2进制,2进制转成8#include<iostream>#include<string>#include<vector>using namespace std;string get2(string& num){ int len = num.size(); string res = ""; for(int i = 0;...原创 2020-02-26 22:10:08 · 184 阅读 · 0 评论 -
删数问题
给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n和k,设计一个算法,找出剩下数字组成的新数最小的删数方案。输入示例: 178543 4输出: 13方法:从高位->低位方向搜索递减区间,若不存在,删最后一位,存在,删递减区间第一位,循环k次**#include<iostream>#include<string>...原创 2019-12-07 11:30:58 · 256 阅读 · 0 评论 -
40. 组合总和 II
1、class Solution {private: vector<int>candidates; vector<vector<int>>res; vector<int>path; void DFS(int start,int target) { if(target == 0) ...原创 2019-12-06 19:02:14 · 125 阅读 · 0 评论 -
把合数分解成若干个质因数相成
题目:#include<iostream>#include<vector>using namespace std;void fractor(vector<int>& res,int num){ int i = 2; while(num > 1) { if(num % i == 0) { res.push_back...原创 2019-12-04 16:44:50 · 1487 阅读 · 0 评论 -
快排的实现
一、快排介绍:快排的思想是分治法(二分法),排序时选个数x,把小于等于x的放x左边,大于等于x的放x右边,然后再对左边、右边递归排序void quickSort(int arr[],int low,int hight){ if(low < hight) { int mid = partition(arr,low,hight); //分区:分成[low,mid-1],mid,[...原创 2019-12-03 20:44:46 · 443 阅读 · 0 评论 -
n皇后---一维数组解法
代码:#include<iostream>#include<cmath>using namespace std; const int n = 8;void Queen(int chess[],int k, int &sum){ bool flag; //用于标志当前布局是否可行 if(k <= n) { for(int i...原创 2019-11-10 14:51:32 · 525 阅读 · 0 评论 -
队列杨辉三角
#include<iostream>#include<queue>using namespace std;void yangHui(int n){ //分行打印二项式(a+b)^n展开的系数。在程序中利用了一个队列,在输出上一行系数时, //将其下一行的系数预先放在队列中。在各行系数之间插入一个0 queue<int> Q; Q.push(1)...原创 2019-10-25 19:37:25 · 151 阅读 · 0 评论 -
二分搜索
对于排过序的数组,二分法查找需要的次数大大减少,如数组长度为N ,N = 1000 ,顺序查找平均需要迭代500次,而二分法查找平均只需要迭代8次.使用三路比较的二分搜索查找次数:logN(向上取整)-1/***@return index where item is found .or NOT_FOUND.*final int NOT_FOUND = -1;*/public stat...原创 2019-04-12 21:28:52 · 467 阅读 · 0 评论 -
稀疏矩阵------三元组存储---笔记
SparseMatrix.h#include<cstdio>#define maxTerms 30typedef int DataType;typedef struct { int row, col; DataType value;}Triple;typedef struct { int Rows, Cols, Terms; //三元组行数,列数,元素个数 Tr...原创 2018-12-12 21:28:27 · 619 阅读 · 0 评论 -
高效点的全排列算法---堆算法(跟堆排序没关系)
第一种:这是普通的实现:**#include<iostream>#include<time.h>#include<algorithm> using namespace std;//交换void swap(int arr[],int i , int j){ int temp; temp = arr[i]; arr[i] = arr[j];...原创 2019-11-23 21:06:21 · 717 阅读 · 0 评论 -
N划分成若干个奇正整数之和的分法有多少种---动态规划
N划分成若干个奇正整数之和:设f[i][j]表示将数i分成j个正奇数,g[i][j]表示将数i分成j个正偶数。因为f[i][j]表示数i分成j个正奇数,假设把这j个划分每个加个1,因为奇数减加1即为偶数,所以这j个划分都变成了正偶数,所以把i-j划分成j个正奇数对应着把i划分成j个正偶数,即:f[i-j][j] = g[i][j]同理可得:把i-j划分成j个正偶数对应着把i划分成j个正奇数,...原创 2019-11-23 19:16:11 · 2116 阅读 · 0 评论 -
二分查找上下界
本文是通过二分法来查找在递增序列中的某个重复数上下区间(闭区间)的如:1,2,2,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,8,8,8,9中6的数组中的区间是[4,29]代码:lowerBound()找下界,upperBound()找上界,代码就一行不一样。#include<iostream>#inclu...原创 2019-11-13 17:06:20 · 609 阅读 · 0 评论 -
1--n全排列
#include<iostream>#include<vector>using namespace std;int count = 0;void myswap(int &a,int &b){ int temp=a; a=b; b=temp;}void permutations(int n,int p,vector<int> p...原创 2019-10-25 19:39:34 · 442 阅读 · 1 评论 -
求素数--筛选法和打表
之前就已经会筛选法了,昨天室友提起说有更快O(n)的筛选法,所以看了下,找到了这个代码:#include<iostream>#include<vector>#include<time.h>using namespace std;long long N = 100000000; vector<bool>isprime(N,true);v...原创 2019-11-25 17:43:31 · 175 阅读 · 0 评论