- 博客(40)
- 收藏
- 关注
原创 C# 使用笔记
各种"?"用法 a ?b:c : 判断a为真返回b,否则c t? :声明可空类型t a??b: a 为真返a, 否则b a?.c : a 为真,返回其属性c, 否则是空的可空类型 a?[i] : a 为真,返回索引i的值,否则是空的可空类型 int i = 23 > 12 ? 23 : 12; Debug.Log(string.Format("23 > 12 ? 23 : 12: {0}", i)); TestInfo info = new TestInfo(); int? ii = inf
2022-03-31 22:37:24
1258
原创 Ai相关总结
本文为个人多年项目的理解,如有不对,请指出 概述 Ai一般与玩法相关,在玩家的感管上就是,非玩家角色表现得是否“足够的聪明”及“良好的交互”。 Ai一般分为“规则型”与“学习型”。“规则型”指AI是由固定的行为,并通过不同组合产生出所谓的AI。“学习型”当然是指现在流行的“机械学习”,产生出所谓的AI。 “规则型”是固定的,比较适合在强调“数值型”的游戏,而“学习型”更适合于“竞技对抗型”的游戏。 当然,他们的界限不是绝对的,“规则型”是“学习型”的基础,而“学习型”又产生出新的“规则型”结果。 常.
2022-03-28 22:01:58
4230
原创 关于帧同步系统(一)
本概述都是基于自己经历的项目见解,不一定是正确的。这是一个系列总结,以后会补充更多 帧同步的概述 帧同步,其实是基本帧更新的同步方式,但并不是要求每一帧都同步数据,而要求多端,他们执行在指定的帧号上,而且每一帧,多端运行结果都是一致的 一般而言,所谓的“帧”不是真实时间的帧(虽然也会受真实时间影响),而叫做作“网络帧”,由“服务器”决定能不能执行下一帧,并广播到多端上驱动更新“帧”。 这个是最简单的方式,实质上项目为了效果好,不会这么老实等待驱动事件 “网络帧”更新一般很慢,主要执行“逻.
2022-03-27 20:05:54
2672
原创 【作业】文本左右对齐
题目 题目来自leetcode 有N个单词的句子,要求每行限制在M个字符中显示,最左单词要向左对齐,最右单词向右对齐,空格要求平均分,不能时最左边的显示最多的空格 结论 输入: “This”, “is”, “a”, “max”, “word”, “line”, “test”, “,”, “which”, “is”, “a”, “test”, “of”,“leetcode” 代码 #pragma #include <vector> #include <iostream> #
2022-03-26 22:46:09
732
原创 部分优化总结
想到了会再补充 运行效率 通用优化 部分很复杂的逻辑,较通用的是,使用并行化处理,开多线程 也可以通过分帧处理,一段处理,分开到多帧里处理 算法或结构的改进 脚本优化 脚本往更快的语言搬相同的逻辑 一般语言速度对比 C++ > C# > lua > python 脚本减少对低层接口的调用,或脚本一次性收集后,再统一调用。 低层接口一般是为了调用一些与引擎相关的功能,引擎一般是使用更快的语言编写,故脚本与引擎语言存在box与unbox流程,即两种语言间的数据处理 频繁的数.
2022-03-10 15:36:27
792
原创 成员函数相关问题
关于类成员函数 类的大小本身不会包含类成员函数的指针地址, class TestASize { int id = 444; }; class TestBSize { public: int id = 232; void test1() {} void test2() {} }; int main() { TestBSize b; TestASize a; std::cout << "a size: " << sizeof(a) << std::en
2022-03-09 17:15:57
301
原创 重写allocate
allocate重写简要 一般STL库里的容器都会使用allocator来分配内存 实现自己的allocator可以达到让容器使用自身的内存管理 实现allocator不必重载allocator类,随便开一个新类即可 allocator有五个必须有的函数 allocate: 用于开辟内存,功能类似operator new deallocate: 回收内存,功能类似operator delete construct: 调用构造函数 destroy: 调用释构函数 重绑用的拷贝函数 template
2022-03-08 15:42:40
538
原创 关于C++ 11的右值
右值的概念 右值,较简单地认为,是指没有变量名的数据(这说法当然不是很准确) C++11 新增处理“右值”的类型,允许指向右值,并用“Ty&&”声明 这里不计划对右值概念展开说,以下主要谈谈“右值”的使用 右值的使用 右值应用的一般是为了解决一些临时数据拷贝问题 做法一般也是直接拷贝右值的内存地址,不做深度拷贝,并放弃右值对该内存引用 移动拷贝:其实就是使用以上方法构造一个新对象 例如,我们需要从结构里拷贝有字符串与数组 class MoveConClass { public:
2022-03-01 19:30:04
743
原创 【作业】八皇后问题
题目 在nxn的格子里,放入N个皇后棋,并使他们相互之间无法攻击 皇后可攻击的方向都为“米”字型, 八方向直线攻击,如图 其中这是一种解决方法: 4.请输入n的数目,并返回所有可能的结果,例如如下: input: 4 find res count: 2 [0,1,0,0 ,0,0,0,1 ,1,0,0,0 ,0,0,1,0] [0,0,1,0 ,1,0,0,0 ,0,0,0,1 ,0,1,0,0] 代码 由于是NxN个格子,每一行必定有一人棋子,这里我每行都找一个可放位置,然后再递归遍
2022-02-14 14:04:03
266
原创 【作业】串联所有单词的子串
题目 给一个字符串s 和一些长度相同的单词words, 在s 里找到所有words按任意顺序组成的子字符串,并返回这些子字符串的起始位置 例如: s = “barfooothefoobarman” words = [“foo”, “bar”] 返回 [0, 10] 结论: s: “barfooothefoobarman” words: [“foo”, “bar”] res: [0, 10] s: “wordgoodgoodgoodbestword” words: [“word”, “good”, “b
2022-01-21 13:59:19
233
原创 C++ 使用备忘
C++ 11 decltype 获取变量的类型 C++ 17 optional 获得选择值 #include <optional> std::optional<int> test_optional(int i) { if (i > 120) return std::optional<int>(200); return std::nullopt; } std::cout << "test_optional()" &
2022-01-19 17:00:05
747
原创 【作业】数独
#include #include #include #include #include <time.h> #include <assert.h> #include class Sudoku { public: static const int ONE_LINE_COUNT = 3; static const int LINE_TOTAL_COUNT = ONE_LINE_COUNT * ONE_LINE_COUNT; static const int ONE_MAT_CO
2022-01-18 14:10:32
470
原创 K个一组翻转链表
题目 一个链表,每个K个节点一组翻转,返回翻转后的链表 例如 链表为{1, 2, 3, 4, 5 } K = 2 翻转后 {2, 1, 4, 3, 5} 结果 list: 1, 4, 7, 10, 56, 23, 23, 2, 87 K = 3 reverse:7, 4, 1, 23, 56, 10, 87, 2, 23 list: 7, 4, 1, 23, 56, 10, 87, 2, 23 K = 2 reverse: 4, 7, 23, 1, 10, 56, 2, 87, 23 代码 #include
2022-01-13 22:53:20
266
原创 [作业]合并K个升序链表
题目 该题来自leetcode 合并K个升序链表 结果 1, 4, 7, 10 3, 89, 111, 120 6, 12, 21, 30, 32 merge result: 1, 3, 4, 6, 7, 10, 12, 21, 30, 32, 89, 111, 120 代码 不考虑效率的话,最简单方法是一个一个链表合并,前面合并后,再合并后面的,假设各链表长是n, 有k个链表,总遍历数为 2n + (3n) + …+ k*n ∑m=2km∗n\displaystyle \sum_{m=2}^{k
2021-12-08 23:15:24
258
原创 [作业]实现正规表达式中的“.“及“*“的功能
题目 实现正规表达式中的".“及”*“的功能,其中”."表示匹配一个任务字符,“ * ”则重复前一字符任意数量(包括零) 结果 str =“aa”, exp =“a” RES: 0 str =“aa”, exp =“a*” RES: 1 str =“ab”, exp ="." RES: 1 str =“aab”, exp ="cab" RES: 1 str =“mississippi”, exp ="misisip." 代码 目前是先分析正则表达,再一个个匹配字符的做法,只针对 “*”做了结束循环的判断
2021-12-02 22:56:37
528
原创 【作业】恢复二叉树
题目 一个升序的二叉树里,其中有两个结点的数据被误交换了,现需要找出这个两结点,交换回来 结论 注意,数组表示的二叉树,顶层从0开始,其中结点里的零表示空结点,n层从 2n 开始,像【1,3, 0, 0,2】,顶层是1, 第二层是3, 0,第三层左到右,0, 2, 0, 0 before: lst: 1 3 0 0 2 tree: 0 3 2 1 0 result lst: 3 1 0 0 2 tree: 0 1 2 3 0 before: lst: 3 1 4 0 0 2 tree: 0 1 0 3
2021-12-01 20:45:54
383
1
原创 【作业】寻找两个正序数组中的中位数
题目 题目来源leetcode 有两个数组,长度各为m, n,且数组内数据排序是正序(由小到大),合并这两个数组成新的正序数组,并求出他们的中位数。要求O(log(m+n)) 结果 merge two list: 1 4 89 1234 0 3 999 1000 res: 0 1 3 4 89 999 1000 1234 middle num: 46.5 merge two list: 1 4 89 1234 0 3 1000 res: 0 1 3 4 89 1000 1234 middle num
2021-11-30 19:46:56
598
原创 【作业】两个很简单的题目
前 计划把一些太简单的题还是放到一起说好了 题目1 边长a, b, c, n 组成一直角三角形,其中他们关系为 (a+b) x (a+b)+ c x c = n x n, 且a+b < c 问有a,b, c, n有多少种组合 结论 input n:55 1, 32, 44 2, 31, 44 3, 30, 44 4, 29, 44 5, 28, 44 6, 27, 44 7, 26, 44 8, 25, 44 9, 24, 44 10, 23, 44 11, 22, 44 12, 21, 44 1
2021-11-30 04:05:06
328
原创 【作业】难倒小学生的问题?
题目 妹的,完全是标题党 所谓难题 观察以下计算,发现有什么规律? 1 + 1 = 0 1 + 6 = 1 6 + 6 = 2 8 + 1 = 2 8 + 6 = 3 其实,就是数字的圈数计算,1 有零圈,6有一个, 8有两 其实是考图形? 那么按0,1填充m,n 的表格,1表示填充,组成图案1,6或8,并识别出他的数字 结果 row: 7, col:7 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1
2021-11-27 18:48:37
661
原创 【作业】最小路径
题目 一个m * n的列表中,每格上有一个数,找到从左上角到右下角的路径,经过所有格的数之和最少。 注意,每次位移只能向右或向下。 结果 下面path里的编号,是指从上到下,从左到右的格子编号。 1 3 1 1 5 1 4 2 1 the path is: 0 1 2 5 8 the values is: 1 3 1 1 1 total: 7 1 2 3 4 5 6 the path is: 0 1 2 5 the values is: 1 2 3 6 tot
2021-11-27 00:47:19
431
原创 [作业] 六角填数问题
题目 题目来自csdn每日一刷 如上图六角星,有12个孔,每个孔按上面编号,各填入不重复的1~12个数,并使每条线的上的总和相等。要求输入前3个数字后,生成剩余的数字。 结果 input 3 nums:1 8 2 FIND the res: 1 8 2 9 7 11 10 12 3 5 6 4 each line num is: 26 26 26 26 26 26 input 3 nums:5 9 1 FIND the res: 5 9 1 4 5 3 6 10 2 3 4 5 each line n
2021-11-25 00:25:30
2020
原创 【作业】报数游戏
题目 来源优快云每日题目 有n个人,每人一数,且最从小到大排成数列,叫m次,每次叫的数t, 让数列中第一个大于t 的人报出其数 结果 input join game player count: 5 input round count: 6 every player’s num: 107 136 2491 3440 23380 nums for calling 31295 3435 10003 14278 10010 1416 result: 23380 3440 23380 23380 23380 2
2021-11-24 00:03:29
3010
原创 【unity3d】GUI 图像自动适配屏幕大小
目的 图像大小是固定,直到屏幕的大小小于这个图像大小时,图像在保持自身长宽不变的情况下,缩小到可以在这个屏幕中可以完整观看。 结果 目前需要跑运行模式,而且要作为该图的组件 对象设置 组织: background的Canvas设置 Panel设置为填满 Image 加入"AutoUiSize"的组件(下面有代码),设置为居中 代码 using System.Collections; using System.Collections.Generic; using UnityEngine;
2021-11-23 23:46:06
4559
原创 【作业】外观数列
题目 给定正整数n, 输出外观数列的第n项 结果: input a num: 4 res: 1211 input a num: 5 res: 111221 input a num: 6 res: 312211 input a num: 1 res: 1 input a num: 2 res: 11 input a num: 3 res: 21 input a num: 4 res: 1211 input a num: 5 res: 111221 代码 事实证明,做题目不要过分考虑内存问题,下面为了
2021-11-22 20:10:27
474
原创 【作业】水滴问题
问题 假设水滴长宽都是1,柱子宽是1,那么给了这个柱子的二维高度图后,在下雨后,柱子间能容纳多少水滴 例如:1代表柱,0代表水滴 1 1 0 0 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 其高度列为0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1 结果为 6 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 4, 2
2021-11-21 23:14:40
787
原创 C++ 小结构的使用注意
小结构的使用注意 小结构,主要是指struct或class,其声明的属性的总大小很少,一般就只有几个基本类型的大小 这些小结构作为函数的参数或返回值声明的,建议直接让他们拷贝进去, 不要用指针或引用类型了 这个问题与CPU寄存器有关,引用与指针类型只有引用地址进入寄存器,具体数据还在内存,导致每次调用时,CPU还得去内存取一次值 以下进行测试,每种方式调用测试10万次,clock计时,结果是 test_fun1 “const TestDat&” cost: 1785 test_fun2 “co
2021-11-20 20:44:58
280
原创 C++调用lua的基本环境建立
目的 在C++中建立lua运行环境,可以跑基本的lua脚本 执行以下lua代码 print("hello world") 输出结果 hello world 准备lua库 直接去lua.org 下lua源码 如果不用makefile转成vs工程话,也可以直接创建新vs项目,把文件拖进去就可以了,注意项目中声明宏LUA_BUILD_AS_DLL 在自己的工程里引lua.lib, 头文件目录也设置到src目录 由于lua是C生成了,为了不让其他文件引用麻烦,并为隐藏lua的调用,建议lua调用都在
2021-11-20 19:51:46
695
原创 求一个3位是否为水仙花数
题目 求一个3位是否为水仙花数 水仙花数指一个数上各位上的数的立次方后的和,等于原来这个数 例如 371 = 33+73+13= 1 + 343 + 27 结果 All the narc nums: 153 370 371 407 Begin test 371 The num '371’IS Narc!! 443 The num '443’is NOT Narc!! 代码 #include <iostream> #include <sstream> #include <ve
2021-11-20 16:01:14
441
原创 计算阶乘的和
题目 计算 1!-2!+3!-4!+5!-6!+7!-8!+9!-10!, 输出结果 结果 +1!-2! result: -1 +1!-2!+3! result: 5 +1!-2!+3!-4!+5!-6!+7!-8!+9!-10! result: -3301819 代码 int CalFactorialRes(int num) { int cur = 0; int cur_fac = 1; for (int i = 1; i <= num; ++i) { std::cout <<
2021-11-19 13:49:48
639
原创 用递归求第N项的值
题目 用递归求,数列1, 2, 4, 2, 3, 6, 12, 6, 3 … 求第n项值 结果 1, 2, 4, 2, 3, res:3 1, 2, 4, 2, 3, 6, 12, 6, 7, 14, 28, res:28 1, 2, 4, 2, 3, 6, 12, 6, 7, 14, 28, 14, 15, 30, 60, 30, 31, 62, 124, 62, 63, 126, 252, 126, 127, 254, 508, 254, 255, 510, 1020, 510, 511, 1022,
2021-11-18 20:13:08
1306
原创 C++ 字符串连接速度测试
C++ 字符串连接速度测试 测试函数 strcpy, sprintf, string::operator+, std::stringstream 测试结果 连接10万次,使用是clock,单位应该是毫秒 ======test begin= strcpy cost:450 sprintf cost:510 string::operator+=() cost:21 stringstream cost:35 ======test end= 测试函数 ``c++ std::cout <<std::en
2021-11-18 14:00:25
728
原创 Blender 法线贴图的创建方法
这里记录一些法线贴图的做法 1.比较适合一些单面的物件做法: (1)建立正则建立,垂直地拍向物件 (2)分出镜头窗口调整为法线模式镜头观测 (3)制作完物件后,保存viewport图 使用view->viewport render image ...
2020-07-10 14:00:57
2460
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅