- 博客(31)
- 资源 (8)
- 收藏
- 关注
原创 智能家居1 涂鸦开关接入homeassistant
一、获取涂鸦开关的localkey参考原文:https://bbs.hassbian.com/forum.php?mod=viewthread&tid=12168&highlight=%E6%B6%82%E9%B8%A6Linux(如树莓派)需要安装运行tuyapi/cli 这个软件,示例:npm i @tuyapi/cli -g。 如果出现权限错误,前面加个sudo命令 。1. 待获取localkey设备要绑定涂鸦智能或智能生活其中一个APP。2. 涂鸦 IoT 平...
2021-04-24 22:29:28
15305
1
转载 浅谈C语言中函数参数的入栈顺序
原文地址:http://soft.chinabyte.com/database/138/12116138.shtml
2014-04-24 10:18:35
561
原创 二叉树的定义
Binary.h#include using namespace std;typedef struct BiTNode{ struct BiTNode *lchild; struct BiTNode *rchild; int data;}BiTNode, *BiTree;void CreateBinaryTreeNode(BiTree *pNode, int
2014-04-24 08:36:53
534
原创 在.c文件中调用cuda函数
问题描述:假设在Ubuntu的一个用户目录下有2个文件,main.c, VectorAdd.cpp,其中 VectorAdd.cpp有vectorAdd函数,main.c提供程序的入口main函数。现在为了在main.c中实现两个向量相加的操作,就需要调用 VectorAdd.cpp中的vectorAdd函数首先列出三个文件中的内容//VectorAdd.cppextern "C"
2014-04-19 17:17:23
6464
3
原创 最长公共子串
求strA和strB的最长公共子串,这里子串是连续的,区别于子序列 解体思路:假设已知以strA[i]和strB[j]为结尾字符的最长公共子串的长度为lcs[i,j],那么以strA[i+1]和strB[j+1]为结尾字符的最长公共子串的长度有两种情况: 1.lcs[i+1,j+1] = 0, 此时strA[i+1] != strB[j+1] 2.lcs[i+1,j+1] = l
2014-04-17 22:29:29
620
原创 求二叉树中节点的最大距离
题意:给定一棵二叉树,假设父子节点定义两个节点之间的边数为“距离”,现在需要求一棵二叉树中最远两个节点的距离*/ 5 /*显然两个节点肯定是叶子节点 6 根据是否经过根节点,分两种情况考虑 7 1.如果不经过根节点,那么最远的距离要么在左子树中,要么在右子树中 8 2.如果经过根节点,那么肯定一个节点在左子树中,另一个节点在右子树中 9 10
2014-04-10 22:19:04
554
原创 图的一些基本算法
#include #include using namespace std;#define MAXSIZE 100#define INFINITY 65535typedef char VertexType;typedef int EdgeType;/*用链表表示*/typedef struct EdgeNode{ int adjvex; EdgeType weight;
2014-03-10 21:36:50
460
原创 最长公共子序列(poj1458)
本题来自poj1458,题目大意:给定两个字符串X,Y,求X,Y的最长公共子序列,不要求子序列连续,但子序列在X,Y中的位置是严格单调递增的。例如 abcfbc与abfcab的最长公共子序列就是abcd,其长度为4;programming和contest的最长公共子序列就是on,其长度为2;abcd和mnp的最长公共子序列为空可以采用动态规划的方法来解该题,计算字符串A、B的最长公共子序列
2014-03-09 11:09:33
710
1
原创 poj1050-求二维数组子数组和的最大值
题意:给定一个二维数组,值有正有负,矩阵的规模不超过100*100,矩阵元素在-127到127之间,求该二维数组的一个子数组,使得该数组的元素之和在所有的子数组中是最大的。解法一:对整个矩阵进行枚举,采用四重循环,计算每个子矩阵的元素之和,在计算所有的子矩阵之和是有很多重复的计算,可以考虑用“空间换时间”的方法,先计算出以(1,1)为左上点,(i,j)为右下点所表示的矩阵元素之和为part
2014-03-07 21:52:14
1419
原创 poj2479-在一个数组中求任意不相交的两个子数组之和的最大值
该题的重点在于求一个数组中子数组之和的最大值,采用动态规划的方法求解,已知数组A[n]假设已求得了A[i,n]中子数组之和的最大值,那么将A[i-1]加入进来后就出现了3种情况。A[i-1]就是A[i-1,n]中子数组之和的最大值A[i-1,...,j](iA[i-1]加进来后对子数组之和的最大值没有影响令A[i,n]子数组之和的最大值为nAll,以A[i]开头的,且是A[i,n]的子
2014-03-07 10:29:46
889
原创 寻找数组中的第k个数(序)
在上篇博客中寻找数组中的第k个数时每次排序所选择的pivot是随机选择的,在这篇博客中,我采用的是算法导论中讲的一种方法(算法导论上论证了该方法在最坏的情况下其运行时间都是线性的),尽可能使得划分后pivot两边数的个数差不多,具体步骤如下:将数组中[low,high]之间的数以长度5为单位,分成1 + (high - low) / 5组("/"表示整数除)寻找每一组中的中位数,先将每
2014-03-06 19:54:28
525
原创 寻找数组中的第k个数
寻找数组中第k个最大的数跟快速排序的原理是类似的,快速排序的一次排序中是将数组的[i,j]段分为三部分[i,pivot-1],pivot,[pivot+1,j],那么pivot就是[i,j]中的第pivot-i+1个元素。那么把数组进行一次排序后,如果pivot就是第k个元素,则就达到了目的;如果pivot比k大,则表示第k大的元素在[i,pivot-1]中,因此现在就需要在[i,pivot-1]
2014-03-06 15:24:03
581
原创 快速排序
PartitionOne是一种常规的划分方法,使用low和high指针从数组的两端进行处理。PartitionTwo是从low到high的方向进行处理,当数组部分有序时,[0-j]表示小于sentinel的元素,[j+1,i]表示大于sentinel的元素,当某个待处理的数小于sentinel时(下标为i+1),就将数组中j+1与i+1位置上的数互换,那么此时[0-j+1]就表示小于senti
2014-03-06 11:33:08
384
原创 串的模式匹配算法
串的模式匹配算法,从下标0开始计算的。void GetNext(char s[], int length, int next[]){ int i = 0, j = -1; next[0] = -1; while(i < length) { if(-1 == j || s[i] == s[j]) { i++; j++; next[i] = j; } e
2014-02-25 11:38:58
528
原创 cuda中结构体的赋值
#include #include #define N 10typedef struct{ int *A; int *B;}vn;typedef struct{ vn *v_n; int *m; int *n;}data;__global__ void kernel(data *d, int n){ int idx = threadIdx.x; if(id
2014-01-22 16:01:18
4596
原创 浅谈如何将linux上的程序移植到windows上
UMFPACK在windows上的完美运行UMFPACK是一种求解大规模稀疏线性方程组的方法,它采用的是多波前的直接求解方法,是目前求解稀疏方法最好的方法,这是一个开源的项目,但从网上下的源代码只能在linux运行,由于项目的需求,需要将该项目移植到windows上,并在vs2010中建立可跟踪调试的工程。查阅了大量的资料发现目前将linux上的程序移植到windows上绝大部分都是使用的cy
2013-12-02 19:21:38
8614
1
原创 给定一个字符串,去除整个字符串中重复的字符
该题与我前面的一篇博客判断一个字符串是否是唯一的很相似。可以分两种情况来讨论:1、不许使用额外的存储空间;2、可使用额外的存储空间s表示待处理的字符串,l表示当前非重复字符的个数1、不许使用额外的存储空间对每个待处理的字符,可以考虑在后处理和在前处理在后处理:对每个待处理的字符,假设为c,从该字符的后一个字符开始,直到字符串的末尾,如果有字符与c相同,就将该位置的字符标记为无效,处
2013-11-27 21:49:43
10233
原创 关于两个对象交换的扩展
前面一节,我讲到了两个对象交换的四种方法,今天,通过调试,来比较下这四种方法的汇编代码,测试环境为vc6.0temp = a;mov eax, dword ptr[ebp + 8] //ptr[ebp + 8]为a的地址mov ecx, dword ptr[eax] //在ecx中暂存a中的内容mov dword ptr[ebp-4], ecx //ebp-4为c的地址,将a的值赋
2013-11-21 21:25:23
795
原创 关于两个对象的交换
为使问题简单化,设定a、b为整型定义如下:int a;int b;要求做到将a,b的值互换方法1:使用中间变量tempint temp;temp = a ;a = b;b = temp;方法2:不使用中间变量,采用异或的方法a = a^b;b = a^b;a = a^b;方法3:不使用中间变量,使用加减法a = a + b;b = a - b;a = a - b
2013-11-20 22:03:02
739
原创 如何判断一个字符串中的字符是否唯一
假设字符集是ASCII字符解法一:使用一个长度为256的bool型数组,数组中的每一个元素与ASCII字符集中的字符相对应,数组最开始初始化为false,当处理一串字符时若某个字符所对应的数组中该位置的元素为true,则表示该字符已在前面出现,即这个字符串中的字符不唯一。如若所对应位置的元素为false,则将该元素赋值为true。然后在继续处理剩下的字符串。bool isUnique(
2013-10-29 00:29:35
906
原创 gdb调试(一)
在使用gdb前,要先载入可执行文件,因为要进行调试,文件中就必须包含调试信息,因此在使用gcc编译时需要使用-g参数来打开程序的调试选项(若不使用-g参数,使用list命令时就会出现“没有符号表被读取”的信息)。1使用gdb命令+可执行文件名就可进入调试eg:gcc -g gdbtest.c -o gdbtest(生成gdbtest可执行文件) gdb gdbtest
2013-10-22 21:21:03
458
原创 一种新的排序算法
<br /> 我们在对一堆数据进行排序的时候,可能会存在这样的一种情况,所有的数都是整数,而且在某个范围了,例如一个班上所有学生的成绩(在这里我们默认为所有的成绩都是整数),在对这些数进行排序是我们可以不用快排、堆排序、希尔排序等算法,而是采用这样的一种算法。由于成绩都是在100以内,因此我们定义一个数组grade[100],初始化为0,grade[i]存放的是成绩为i的人数,只需循环一遍就可以将顺序排出来。
2011-05-21 00:22:00
302
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人