
其他算法题
wangfy_
这个作者很懒,什么都没留下…
展开
-
算法:数字split个数
数字split个数package mainimport ( "fmt")func PrintArr(arr [][]int) { for _, v := range arr { fmt.Printf("%v\n", v) }}func SplitArr(arr []int, split int) { printArr := make([][]int, 0) current := 0 subArr := make([]int, 0) for i := 0; i <原创 2020-06-07 15:46:26 · 714 阅读 · 0 评论 -
字节面试中一道算法题
两个goroutine交替依次打印十次1和2,要求最多使用两个channel,不能使用sleep、waitGroup。package mainimport ( "fmt")var POOL = 10var msgFirst = make(chan struct{})var msgSecond = make(chan struct{})func goroutineFist() { for i := 0; i < POOL; i++ { msgFirst <- str原创 2020-06-07 15:41:53 · 542 阅读 · 0 评论 -
#### LRU算法 ####
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。设计思路使用map+链表: 1)链表负责维护node的顺序。 2)map负责以O(1)的复杂度快速定位node在链表中的位置。具体的,map的key存node值,map的value存node的地址。当'node新增'或'访问node命中'时,放或移到链表头;当需要淘汰node时,淘汰链表尾的node。此时,新增、访问、移动、删除的时间复杂.....原创 2020-05-25 14:03:58 · 728 阅读 · 1 评论 -
BASIC-3 字母图形
#include <cstdio>int G[30][30];int main() { int n, m; scanf("%d%d",&n,&m); for(int i=0; i<26; i++) { int cnt = 0; for(int j=i; j<26; j++) { ...原创 2018-03-22 00:50:33 · 161 阅读 · 0 评论 -
BASIC-2 01字串
#include <cstdio>int change(int x) { //转为二进制 int cnt = 0; char number[10]; do { number[cnt++] = x % 2 + '0'; x /= 2; } while(x != 0); for(int i=5-cnt-1; i&...原创 2018-03-22 00:50:36 · 146 阅读 · 0 评论 -
BASIC-1 闰年判断
#include <cstdio>int main() { int n; scanf("%d",&n); if(n%4==0 && n%100!=0 || n%400==0) printf("yes"); else printf("no"); return 0;}原创 2018-03-22 00:54:54 · 206 阅读 · 0 评论 -
ALGO-1 区间k大数查询
#include <cstdio>#include <algorithm>using namespace std;const int MAXN = 1010;bool cmp(int a, int b) { return a > b;}int main() { int n, m ,number[MAXN]; scanf("%d"...原创 2018-03-22 12:20:18 · 212 阅读 · 0 评论 -
ALGO-5 最短路(待续)
#include <cstdio>#include <vector>using namespace std;const int MAXN = 110;const int INF = 1000000000;int N, M, G[MAXN][MAXN], d[MAXN];bool vis[MAXN];void Dijkstra(int x) { fill(...原创 2018-03-26 22:06:30 · 131 阅读 · 0 评论 -
16年第七届蓝桥杯 c/c++ b组 题解
http://blog.youkuaiyun.com/y1196645376/article/details/697181921. 煤球数目 答案:171700#include <cstdio>int N = 100, sum1 = 0;int solve(int x) { int sum2 = 0; for(int i=1; i<=x; i++) sum2 += i; ...原创 2018-03-27 10:43:08 · 254 阅读 · 0 评论 -
2018年第九届蓝桥杯省赛C/C++B组题解
“2018年第九届蓝桥杯省赛C/C++B组”题解目录:1. 第几天2. 明码3. 乘积尾零4. 测试次数5. 快速排序6. 递增三元组7. 螺旋折线8. 日志统计9. 全球变暖10. 乘积最大1. 日期 答案:1252000年的1月1日,是那一年的第1天。那么,2000年的5月4日,是那一年的第几天?方法一:表格下拉方法二:java.util.Calendar 三行代码也可以搞定2. 明码 答案:...原创 2018-04-03 15:34:55 · 4154 阅读 · 4 评论 -
15年第六届蓝桥杯 c/c++ b组 题解(更新中)
1. 奖券数目 答案:52488公式:8*9*9*9*9#include <cstdio> int main() { int sum = 0; for(int i=10000; i<=99999; i++) { if(i/10000%10 == 4 || i/1000%10 == 4 ||i/100%10 == 4 ||i/10%10 == 4 || i%10 ...原创 2018-03-28 16:34:08 · 279 阅读 · 0 评论 -
DP-18蓝桥-测试次数
18蓝桥-测试次数:x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。如果手机从第7层扔下去没摔坏,但第8层摔坏...原创 2018-04-04 15:54:50 · 964 阅读 · 0 评论 -
历届试题 核桃的数量
#include <stdio.h>int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }int solve(int a, int b) { return a*b/gcd(a,b);}int main() { int a, b, c; scanf("%d%d%d",&a,&b,&c...原创 2018-03-28 21:25:58 · 166 阅读 · 0 评论 -
对拍工具
//From wangfy#include <cstdio>#include <map>#include <cstring>#include <string>using namespace std;int main() { map<string,bool>mapp; char s[20]; int n...原创 2018-03-29 11:33:36 · 211 阅读 · 0 评论 -
18蓝桥国赛JavaB第二题(全排列)
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;long long num[9]={1,2,3,4,5,6,7,8,9};long long theMax = 0;bool isok(long long sum) { if(sum / 100000...原创 2018-05-29 12:51:04 · 183 阅读 · 0 评论 -
全排列
给定任意一个自然数,获取它重新排列后,下一个比它大的自然数,要求时间复杂度O(n)。例如: 给定1233,它的下一个是1323; 给定1323,它的下一个是1332; 给定9876,它的下一个不存在;#include <cstdio>#include <algorithm>#include <cstr...原创 2019-01-09 20:15:18 · 115 阅读 · 0 评论 -
BASIC-4 数列特征
#include <cstdio>typedef long long ll;const int MAXN = 10010;ll n, maxV = -1000000, minV = 1000000, sum = 0, number[MAXN];int main() { scanf("%lld",&n); for(ll i=0; i<n; i++...原创 2018-03-22 00:50:24 · 235 阅读 · 0 评论 -
BASIC-5 查找整数
#include <cstdio>typedef long long ll;const int MAXN = 110;ll n, x, number[MAXN];int main() { scanf("%lld",&n); for(ll i=0; i<n; i++) scanf("%lld",&number[i]); ...原创 2018-03-22 00:50:17 · 174 阅读 · 0 评论 -
BASIC-6 杨辉三角
#include <cstdio>const int MAXN = 110;int n, number[MAXN][MAXN];int main() { scanf("%d",&n); for(int i=0; i<n; i++) number[i][0] = number[i][i] = 1; for(int i=2; ...原创 2018-03-22 00:50:21 · 136 阅读 · 0 评论 -
ALGO-2 最大最小公倍数
#include <stdio.h>typedef long long ll;int main(){ // 从1~n中任选出三个数,他们的最小公倍数最大为多少 ll n, max = 0; scanf("%d",&n); if(n<=2) max = n; else if(n % 2 != 0) max = n * (n-1) * (n-2); else...原创 2018-03-23 08:15:21 · 221 阅读 · 0 评论 -
ALGO-3 K好数
代码1,运行超时,只过了3点#include <cstdio>typedef long long ll;const ll MAXN = 110;const ll x = 1000000007;ll K, L, cnt = 0;bool vis[MAXN][MAXN];bool isOk(ll index,ll x) { int i = index - 1; if(i...原创 2018-03-24 16:07:52 · 135 阅读 · 0 评论 -
14年第五届蓝桥杯 c/c++ b组 题解
1. 单词个数 答案:*p!=' ' && tag == 1#include <cstdio>int get_word_num(char* buf){ int n = 0; int tag = 1; char* p = buf; for(;*p!=0 && *p!=13 && *p!=10;p++){ if(...原创 2018-04-03 18:23:30 · 291 阅读 · 0 评论 -
BEGIN-4 Fibonacci数列
#include <cstdio>const int X = 10007;int main() { int n, Fibonacci[1000010]; scanf("%d",&n); Fibonacci[1] = 1; Fibonacci[2] = 1; for(int i=3; i<=n; i++) { F...原创 2018-03-21 16:20:07 · 188 阅读 · 0 评论 -
BEGIN-3 圆的面积
#include <cstdio>#include <cmath>using namespace std;int main() { int r; scanf("%d",&r); double PI = atan(1.0)*4; printf("%0.7lf",PI*r*r); return 0;}原创 2018-03-21 16:38:09 · 135 阅读 · 0 评论 -
BEGIN-2 序列求和
#include <cstdio>#include <cmath>using namespace std;typedef long long ll;int main() { ll n; scanf("%lld",&n); ll x = (1 + n - n % 2) * n / 2; if(n % 2 != 0) x += ...原创 2018-03-21 16:52:58 · 183 阅读 · 0 评论 -
BEGIN-1 A+B问题
#include <cstdio>#include <cmath>using namespace std;typedef long long ll;int main() { ll a, b; scanf("%lld%lld",&a,&b); ll x = a + b; printf("%lld",x); r...原创 2018-03-21 16:55:44 · 155 阅读 · 0 评论 -
BASIC-13 数列排序
#include <cstdio>#include <algorithm>using namespace std;const int MAXN = 100010;int main() { int n, number[MAXN]; scanf("%d",&n); for(int i=0; i<n; i++) { ...原创 2018-03-21 16:59:57 · 159 阅读 · 0 评论 -
BASIC-12 十六进制转八进制
#include <cstdio>#include <cstring>using namespace std;typedef long long ll;const int MAXN = 110;int n, numberRadix8[MAXN], cnt;char number[MAXN];void change() { //16进制转10进制 ...原创 2018-03-21 17:55:38 · 244 阅读 · 0 评论 -
BASIC-11 十六进制转十进制
#include <cstdio>#include <cstring>using namespace std;typedef long long ll;int main() { char str[110]; gets(str); ll len = strlen(str); ll x = 0; for(int i=0; i&l...原创 2018-03-21 21:56:02 · 174 阅读 · 0 评论 -
BASIC-10 十进制转十六进制
#include <cstdio>#include <cstring>using namespace std;typedef long long ll;int main() { char change[20] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; l...原创 2018-03-21 22:06:35 · 282 阅读 · 0 评论 -
BASIC-9 特殊回文数
#include <cstdio>int n;void solve1() { //五位 for(int i=1; i<10; i++) { for(int j=0; j<10; j++) { int k = n - i*2 - j*2; if(0 <= k && k &l...原创 2018-03-21 22:53:48 · 228 阅读 · 0 评论 -
BASIC-8 回文数
#include <cstdio>void solve() { for(int i=1; i<10; i++) { for(int j=0; j<10; j++) { int x = i*1000 + j*100 + j*10 + i; printf("%d\n",x); } ...原创 2018-03-21 22:57:42 · 191 阅读 · 0 评论 -
BASIC-7 特殊的数字
#include <cstdio>void solve() { for(int i=1; i<10; i++) { for(int j=0; j<10; j++) { for(int k=0; k<10; k++) { int x =i*100 + j*10 + k; ...原创 2018-03-22 00:50:12 · 227 阅读 · 0 评论 -
17年第八届蓝桥杯 c/c++ b组 题解
http://blog.youkuaiyun.com/y1196645376/article/details/697181921. 购物单 答案:5136.859500,即5200#include <cstdio>int main() { double sum = 0.0; for(int i=0;i<50; i++) { double a, b; scan...原创 2018-03-22 19:50:12 · 429 阅读 · 0 评论