算法
利来利往
幽默,诚实,守时,守信,适应能力强。
展开
-
随机函数,洗牌函数 random_shuffle
【代码】随机函数,洗牌函数 random_shuffle。转载 2022-11-18 17:17:09 · 153 阅读 · 0 评论 -
【算法】跑得快AI
代码不全,但是函数可以复用原创 2022-07-13 13:27:20 · 2173 阅读 · 8 评论 -
随机非连续lua配置表,要求相近的不重复
local RAND_INDEX = 1--获得机器人配置function Room:getBotPlayerInfo(session, t) local seatId = t:getTableType() local gameinfo = GetConfig("gameinfo",seatId) or {} local siteLevel = gameinfo.siteLevel or 1 RAND_INDEX = RAND_INDEX + 1 local cfg = GetConfig(.原创 2022-05-19 12:54:35 · 124 阅读 · 0 评论 -
有序序列去重
local tmpHands = {23,43,44,65,26,46,67,48,68,29,69,70,12,13,53,73,21,2,22,36}-- 这个是对扑克牌取值,和去重没关系function ddzGetCardValue(cbCardData) if(not cbCardData)then return 0 end cbCardData = cbCardData % 20 if(cbCardData == 1)then return 14 end if(cb..原创 2022-05-14 10:55:58 · 182 阅读 · 0 评论 -
深度优先遍历(DFS)和广度优先遍历(BFS)
深度优先遍历主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底...,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走。广度优先遍历广度优先遍历,指的是从图的一个未遍历的节点出发,先遍历这个节点的相邻节点,再依次遍历每个相邻节点的相邻节点。DFS 一般是解决连通性问题,而 BFS 一般是解决最短路径问题,一般深度优先遍历用的是栈,而广度优先遍历要用队列来实现转载 2022-01-10 16:50:05 · 326 阅读 · 0 评论 -
【算法】算法
算法1.你熟悉那些排序算法2.冒泡排序和快速排序原理和时间复杂度,谁更稳定3.快速排序可以优化吗4.介绍寻路算法,寻路算法失败怎么处理5.除了A星算法还知道其他算法吗6.A星算法的原理加密一致性哈希1、冒泡排序(Bubble Sort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端原创 2021-04-23 17:29:49 · 222 阅读 · 0 评论 -
华为机试算法题
一共三道题,150分钟,第一二题200分,第三题400分,听说150分算过。主要是只告诉你通过率,没告诉你正确答案和你的错误答案做对比,不知道自己哪里漏了。/*第一题1-100围城一个圈,重1开始数,如果等于给定的数就删掉,继续数, 直到剩余的数量小于给定的数。此题100%通过输入3输出58,91输入4输出34,45,97*/#include <iostream>#include <string.h>#include <map>.原创 2020-12-10 02:43:20 · 1123 阅读 · 0 评论 -
求最低价格
超能饮料 (关键字: chemical)文明盛世旗下的化工产品实验室一直在研究如何配制能够提高工程师生产效率、保持他们头脑清醒的新型兴奋剂。研究已经分离了一系列化合物,当它们和糖水混合在一起就成为了下一代超能饮料的活性成分。这些化合物成分类似:任何一种化合物都可经由某一化学反应,成为其它任意一种化合物。实际进行化学反应的成本很低,但使反应发生的设备和催化剂成本相当高昂。把某一化合物转换原创 2014-02-07 19:43:30 · 1169 阅读 · 1 评论 -
合算法:从m个数中选n个数的所有组合
#include using namespace std;int combine(int a[], int n, int m){ m = m > n ? n : m; int* order = new int[m+1]; for(int i=0; i<=m; i++) order[i] = i-1; int count = 0;转载 2014-08-25 04:32:17 · 4743 阅读 · 0 评论 -
求全排列
#include using namespace std;void myswap(int &a,int &b){ int temp = a; a = b; b = temp;}void fuc(int a[],int n,int len){ if(n==1) { for(int i=0;i<len;++i) { cout<<a[i]<<","; }转载 2014-08-24 15:43:42 · 548 阅读 · 0 评论 -
A星
http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx转载 2014-02-13 17:26:48 · 636 阅读 · 0 评论 -
大数相乘(支持浮点数)
// $Id: multi.cpp 7 2006-11-02 06:30:51Z JiangMiao $ // JiangMiao's Blog http://blog.csdn.net/antter#include #include using namespace std;#define SAFE_DELETE(p) if((p)!=NULL){delete p;p=NULL转载 2014-02-19 18:15:25 · 1160 阅读 · 0 评论 -
在一个数组中找到等于某个数的组合
方法1:#include#include#include#include#include #includeusing namespace std;void getResult(vector a,int result) { sort(a.begin(),a.end()); int nLen = a.size(); for (int i = 0; i转载 2014-02-20 15:19:44 · 3925 阅读 · 0 评论 -
蛋疼的规律题
1.在括号内填入一个字,使之既有前一个词的意思,又有后一个词的意思 顶部()震荡 顶部(颠) 震荡注:没有山字头的,颠:既有颠峰之意,又有颠簸震荡之意有山字头的只有山顶的意思 2.41,(28),27,83,(),65我是这样解 : 41 - 27 = 1414 × 2 = 28 即括弧里的数目因此,依此类推 83 - 65 = 1818 × 2 = 36答案是:3转载 2012-11-06 16:06:34 · 564 阅读 · 0 评论 -
二叉树的应用—最优二叉树(哈夫曼树)
1.哈夫曼树的基本概念最优二叉树,也称哈夫曼(Haffman)树,是指对于一组带有确定权值的叶结点,构造的具有最小带权路径长度的二叉树。那么什么是二叉树的带权路径长度呢?在前面我们介绍过路径和结点的路径长度的概念,而二叉树的路径长度则是指由根结点到所有叶结点的路径长度之和。如果二叉树中的叶结点都具有一定的权值,则可将这一概念加以推广。设二叉树具有n 个带权值的叶结点,那么从转载 2012-06-29 17:26:19 · 4116 阅读 · 0 评论 -
求x,y
--[[x, y ∈ [1,9]10x + y = a,a^3 = c,是4位数a^4 = d, 是6位数c、d各数字正好是0~9中一个, 不重复求x,y]]local Aarr = {}for a=11,99 do if(1000<=a*a*a and a*a*a<=9999)then if(100000<=a*a*a*a and a*a*a*a <=999999)the原创 2015-05-14 13:04:05 · 555 阅读 · 0 评论 -
游戏批量合成道具算绑定道具的数量算法
function CheckCompositeCommonBind(sysarg, consumes, nCount) local nMaxCount = 0 local bBind = false for k,v in pairs(consumes)do if(v.id ~= 0)then --有多少绑定材料 local haveCount = Actor.getItemC原创 2016-03-07 16:52:46 · 1282 阅读 · 0 评论 -
[手游项目2]-27-十进制的位操作
将十进制的各个位数分离出来 https://blog.csdn.net/baidu_33725271/article/details/69891704在c十十中,求一个十进制数n各个位数的和应怎么编程 https://zhidao.baidu.com/question/1579592418533529300.html ...转载 2018-11-27 19:34:56 · 203 阅读 · 0 评论 -
面试题:求质因数分解
题目:求一个数的质因数分解,比如输入90,输出2*3*3*5。#include using namespace std;void Decomposition(int nNum){ for(int i=2;i<nNum;) { if(nNum % i == 0) { nNum = nNum /i; cout<<i<<","; } e原创 2012-11-09 10:54:16 · 965 阅读 · 0 评论 -
[手游项目2]-12-min 到max随机n个不同的数
#include <Windows.h>#include <vector>int Rand(int from,int to){ int nDec, nMin; if (from > to) { nDec = from - to + 1; nMin = to; } else { nDec = to - from ...原创 2018-08-30 14:04:16 · 163 阅读 · 0 评论 -
[leetcode]第4题
class Solution { int myMin(int x, int y) { return x < y ? x : y; } int findNumber(vector<int>& nums1, vector<int>& nums2, int findKth) { int lengt...原创 2019-01-14 17:02:18 · 387 阅读 · 1 评论 -
[leetcode]第3题
class Solution {public: int lengthOfLongestSubstring(string s) { vector<int>v(256,-1); int len = s.size(); int ans = 0; int start = -1; for(int i=0;...原创 2019-01-14 16:50:10 · 288 阅读 · 0 评论 -
[leetcode]第1题
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int>twoSum; map<int,int>tmpmap; int nsize = nums.size...原创 2019-01-14 16:34:23 · 122 阅读 · 0 评论 -
[leetcode]第2题
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* a...原创 2019-01-14 16:30:08 · 153 阅读 · 0 评论 -
intech面试总结
一面:电话面试,总时间40分钟,2个人,第一个人问的一些基础的C++技术,主要是网络和数据库和多线程相关第二个人主要问一些项目架构,和项目管理相关。二面:(全是选择题)第1-4部分是智力题,找数字规律和找图形第5-6部分是性格题第7-10部分是逻辑题,和语文的阅读理解差不多,但是更像公务员的考试风格。一面感觉一般,本人工作中很少去复习基础知识,很多记不清楚,也有很多...原创 2019-01-17 17:28:54 · 1773 阅读 · 4 评论 -
[手游项目2]-28-强化系统
--概率算法local randlist = {85,60,55,50,50,40,35,25,20,15,12,10,10,5,5} --概率local countlist = {0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0} --统计强化次数local randlist2 = {} --正常概率local randlist3 ...原创 2018-12-01 05:16:13 · 262 阅读 · 0 评论 -
经典贪心,哈夫曼编码。
#include #include #include #include using namespace std;vector V;struct Node { int len; Node* right; Node* left; Node(int x = 0) : len(x), right(NULL), left(N转载 2012-06-29 17:27:20 · 860 阅读 · 0 评论 -
用两个栈实现队列和用两个队列实现一个栈
题目:用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。template class CQueue{public: CQueue(void); ~CQueue(void); void appendtail(const T& node); T deleteHea转载 2012-11-17 09:37:14 · 507 阅读 · 0 评论 -
今天是周几?
#include using namespace std;/*有两个村,张村和李村张村的人星期一三五说谎李村的人星期二四六说谎一人问,今天周几?结果两个村的人都回答“前天是我说谎的日子”问:今天是周几? *///A 表示张村 B表示李村 ,返回0表示说谎,返回1表示说实话int FindA(int nWeek){ if(nWeek ==原创 2012-12-01 12:01:44 · 1011 阅读 · 0 评论 -
线性表
#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define ERROR 0#define OK 1#define OVERFLOW -2#include #include #include using namespace std;struct sqlist{ int *elem; in转载 2012-11-20 11:37:12 · 493 阅读 · 0 评论 -
实现只有0,1,2三种元素的乱序数组的排序
1.1思路1: 第一眼看到这样的题目,会举得非常简单,只需要两次遍历数组就可以完成了。第一次遍历,扫描数组中的元素,每次遇到0则count0++,遇到1则count1++,遇到2则count2++,这样一趟下来就能够统计出数组中0,1,2的个数了。然后第二次遍历的时候,只需要对数组进行重新赋值就可以了,从头开始赋值count0个0,count1个1,count2个2。最终完成对数组的排序。转载 2012-11-09 16:26:49 · 1218 阅读 · 0 评论 -
递推与递归
递推:构造低阶的规模(如规模为i,一般i=0)的问题,并求出解,推导出问题规模为i+1的问题以及解,依次推到规模为n的问题。(知道第一个,推出下一个,直到达到目的。,关键要找到递推公式) 递归:将问题规模为n的问题,降解成若干个规模为n-1的问题,依次降解,直到问题规模可求,求出低阶规模的解,代入高阶问题中,直至求出规模为n的问题的解。(要知道第一个,需要先知道下一个,直到一个已知的,再转载 2012-11-17 09:58:13 · 591 阅读 · 1 评论 -
字符串去重
题目:求字符串的最长非重复子序列。比如字符串“dabaccdeff”,它的最长非重复子序列为“dabcef”#include#include #includeusing namespace std;int NoReplicatedSubstring(char *s,int len){ const int tablesize=256; char原创 2012-11-08 21:35:55 · 4310 阅读 · 1 评论 -
连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间负责度为O(n)。看到这个题目,我们首先想到的是求出这个整型数组所有连续子数组的和,长度为n的数组一共有 n(n+2)/2个子数组,因此要求出这些连续子数组的和最快也需要O(n^2)的时间复杂度。但是题目要求的O(n)的时间复杂度,因此上述思路不能解决问题。看到O(n)时间转载 2012-11-12 11:21:25 · 550 阅读 · 0 评论 -
全排列问题
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba。这是一个典型的递归问题,考虑如何将复杂问题分解成简单问题,最后通过递归解决。我们肯定有这样的经验,自己在写abc的全排列的时候,肯定会想首先确定第一个字符,然后考虑后面有什么排列,比如确定第一个字符为a,那么剩下的b和c有两种转载 2012-11-12 14:51:21 · 461 阅读 · 0 评论 -
打印螺旋数字矩阵
1:如下,是一个“4×4”的数字矩阵,请找出其中的规律,然后编写一个程序,要求能打印出“N×N”时的数字矩阵: 1 2 3 412 13 14 511 16 15 610 9 8 7请用自己最熟悉的语言编写,或者用自然语言描述。至少要包括下列内容:1: 数字矩阵的规律2: 采用的数据结构3:关键的原创 2012-11-08 17:05:24 · 1002 阅读 · 0 评论 -
中兴移动的笔试题,字符串的移动
一道填空题:移动字符串内容,传入参数char *a和m,规则如下:将a中字符串的倒数m个字符移到字符串前面,其余依次像右移。例如:ABCDEFGHI,M=3,那么移到之后就是GHIABCDEF。注意不得修改原代码void fun(char *w, int m){ int i=0; len=strlen(w); if(m>len) m = len; w转载 2012-10-16 21:15:29 · 1868 阅读 · 0 评论 -
华为机试4
一:通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔,请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’,并将子串存储。如果输入”abc def ghi d”,结果将是abc,def,gh,i,d,要求实现函数Void DivideString(const char *pInputStr,long IinputLen,char *原创 2012-11-06 10:46:21 · 524 阅读 · 0 评论 -
华为笔试题3
一:给定一个字符串,寻找它的一个最大子字符串,该子字符串是回文。例如给定一个用例的字符串”gabcdcbaef”,那么最大回文 字串是”abcdcba”函数声明为void huiwen(char input[], int len, char output[])#include #include using namespace std;//如果是回文字符串,那么从字符原创 2012-11-02 11:49:32 · 483 阅读 · 0 评论 -
一些算法题
1、将一整数逆序后放入一数组中(要求递归实现)#include void convert(int *result, int n) { if(n>=10) convert(result+1, n/10); *result = n%10; } int main(int argc, char* argv[]) { int n = 123原创 2012-10-17 20:27:01 · 669 阅读 · 1 评论