算法与数据结构
cgnerds
这个作者很懒,什么都没留下…
展开
-
Android Studio 中移植RBOT
软件版本SDK、NDK 和 CMake 都是使用 Android Studio 的 SDK Manager 下载的。操作系统:macOS Big Sur BetaAndroid Studio: 4.0.1OpenGL:GLES 3.0SDK:30.0.1NDK:21.0.6113669CMake:3.10.2.4988404Gradle:6.1.1(Android Gradle Plugin Version 是 4.0.1)编译RBOT在VSCode中设置其 include 路径{原创 2020-08-02 19:35:36 · 169 阅读 · 0 评论 -
C++面试之类的sizeof大小
以前写过查看C++数据类型的字节数,但实际应用中我们更关心的是struct和class的大小。首先来看空类的大小,如下:class VoidClass{};运行程序,发现sizeof(VoidClass)结果为1。这里涉及到类的实例化的概念,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空类也会被实例化,所以编译器会给空类隐含的添加一个字节,这样原创 2012-09-27 12:24:39 · 1847 阅读 · 1 评论 -
Matlab中读取txt文件的几种方法
转自:http://www.360doc.com/content/12/0307/22/9053144_192599269.shtml一、纯数据文件(没有字母和中文,纯数字)对于这种txt文档,从matalb中读取就简单多了例如test.txt文件,内容为“17.901 -1.1111 33.045转载 2012-03-07 22:26:36 · 244905 阅读 · 5 评论 -
如何判断链表中存在环路
如果你曾经想过要参加面试,像我一样,你一定看过这个问题:如何判断链表中存在环路。(我不太清楚这个问题的应用在哪里,烦请各位读者能够提示一下。)先简单说一下我之前看到的方法。方法一:蛮力法。方法二:在链表中增加一个域visited,初始化都为0,从链表的头部开始走,每走过一个链表就转载 2011-07-07 08:31:47 · 5417 阅读 · 0 评论 -
可视化的数据结构和算法
下面是一个日本程序员制做的一个可视化的排序过程,包括了各种经典的排序算法,你可以调整速度和需要排序的个数。酷壳以前也介绍过几篇相关的文章 一个排序算法比较的网站,一个显示排序过程的Python脚本 关于各种排序算法的运行复杂度比较,请参看Wikipedia的排序算法比较。转载 2011-05-04 15:56:00 · 828 阅读 · 0 评论 -
KMP算法
KMP算法是字符串处理算法的一种经典算法。字符串中的一些算法在C++中需要编程者自己实现,在C#中的话String类的功能及其强大,编程者自己调用该类一些功能完成字符串处理。那么可能就导致错过这些字符串基本的经典算法。而在字符串处理这些算法中,KMP算法可谓是经典算法。 那么首先看下面一个一般求子串在主串中的位置的算法。模式匹配 有两个字符串S1(长度为n)和S2(长度为m)(n>m),求S2在S1中的字符串匹配的第一个位置。子串的定位操作通常称做串的模式匹配。其中S2成为模式串,S1为主串。 一般基转载 2011-04-06 23:25:00 · 632 阅读 · 0 评论 -
每天一道算法题-1 找出数组中两个只出现一次的数字
由于做项目,还有看论文,很长时间没有接触过算法题了,今天看到博客园里小桥流水的算法文章,感觉很简单,但编写的时候竟然发现不知道怎么操作字符串数组了。算法还是要每天练习啊,这样才不会退步。有感于此,以后每天(节假日得陪老婆,就放过了吧^_^)都会写一道算法题,以保持自己的水平。我搜集的算法题在文章最后都会有作者的版权声明,但不一定是作者原来的解决方法,自己会做相应的优化。题目:个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1原创 2011-03-18 15:43:00 · 1642 阅读 · 0 评论 -
Google在Codility.com上的一个测试范例
Task descriptionEquilibrium index of a sequence is an index such that the sum of elements at lower indexes is equal to the sum of elements at higher indexes. For example, in a sequence A: A[0]=-7 A[1]=1 A[2]=5 A[3]=2 A[4]=-4 A[5]=3 A[6]=03 is an equilibriu原创 2011-02-23 10:10:00 · 2398 阅读 · 0 评论 -
在字符串中删除特定的字符
<br /><br />题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。<br />分析此题的文章很多(能够讲解清楚是种能力),给出参考性代码,用代码说话<br /> #include <stdio.h><br />#include <memory.h><br />/*************************************************转载 2011-02-25 16:06:00 · 681 阅读 · 0 评论 -
木棒问题
描述XX有n根长度不同的木棒,有一天它把所有的木棒排成一行,用S1,S2,S3,...,Sn表示.量出每个木棒的长度Sk(1现在给出每个木棒的长度,你需要找到满足上述条件的两个木棒Si和Sj,使得j-i最大. (请使用分治法解此题)输入输入含有多组数据.每组数据包括两行. 第一行:一个正整数n(n第二行:n个不同的正整数(不超过100000),表示木棒的长度序列S1,S2,S3,...,Sn输出输出最大可能的j-i值,如果这样的i和j不存在,输出-1例子输入45 4 3 646 5 4 3例子输出1-1解答转载 2011-01-19 11:02:00 · 1561 阅读 · 0 评论 -
C++ 归并排序实现(算法导论)
<br />#include <iostream>using namespace std;void merge(int *data, int p, int q, int r){ int n1, n2, i, j, k; int *left=NULL, *right=NULL; n1 = q-p+1; n2 = r-q; left = (int *)malloc(sizeof(int)*(n1)); right = (int *)ma原创 2011-01-10 14:47:00 · 5620 阅读 · 1 评论 -
Triangle War(POJ 1085)
<br />问题描述:<br />Triangle War is a two-player game played on the following triangular grid: <br /> <br />Two players, A and B, take turns filling in any dotted line connecting two dots, with A starting first. Once a line is filled, it cannot be filled agai原创 2011-01-07 17:18:00 · 1366 阅读 · 0 评论 -
Battle City(POJ 2312)
<br />问题描述 <br />许多人都玩过坦克大战这个游戏,我们现在来考虑一下这个游戏的简化版本: 给出一个地图,这个地图上只有空地,河流,金属墙和砖墙,你的目标是从你当前的位置尽快地获得Bonus(不考虑敌人),如下图: <br /> <br />你的坦克不能穿过河流和墙,但是它可以开炮摧毁砖墙.如果你打中砖墙的话,那个位置就会变成空地.如果你击中了金属墙面,你不会对它造成任何损坏. <br />在你行动的每一步,你可以选择移动,或者是不移动而向某个方向开炮,炮弹会向前直行直到击中某一面墙或者飞出地图原创 2011-01-07 17:26:00 · 1583 阅读 · 0 评论 -
C++ 快速排序实现(算法导论)
#include #include using namespace std;//交换两个元素值void swap(int &p,int &q){ int t; t = p; p = q; q = t;}//快速排序算法中的一趟划分函数int partition(vector &data, int low, int high){ //基准记录 int temp = data[low]; do{ while((data[high原创 2010-12-09 20:22:00 · 1638 阅读 · 0 评论 -
斐波那契数(POJ 3070)
问题描述:斐波那契数列是指如下数列: F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2).数列的前10个数如下: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … 对于给定的数n,请求出F(n)的后四个数字.关于输入:输入包括多组数据. 每组数据为一行,包含一个非负整数n(0输入的最后一行是一个数-1,表示输入结束.关于输出:对于每组数据,你的程序应该输出F(n)对10000取模的结果.例子输入:099999999991000000000-1例子输出原创 2010-12-07 09:35:00 · 2134 阅读 · 0 评论 -
田忌赛马(POJ 2287)
<br />问题描述:你一定听过田忌赛马的故事吧? <br />如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛。赢一局,田忌可以得到200两银子,输一局,田忌就要输掉200两银子,平局的话不输不赢。 <br />请问田忌最多能赢多少银子?<br /> <br />关于输入:<br />输入包含多组测试数据. <br />每组测试数据的第一行是一个整数n(1<=n<=1000),表示田忌和齐王都拥有n匹马。接下来一行是n个整数,表示田忌的马的速度,下一行也是转载 2010-12-07 10:08:00 · 3300 阅读 · 0 评论 -
矩阵乘方和(POJ 3233)
<br />问题描述:给出一个n*n的矩阵和正整数k,请求出S=A+A^2+A^3+A^4+...+A^k的值.A^x表示x个A相乘的结果.<br /> <br />关于输入:输入包含一组数据. <br />第一行是三个正整数n k m, (n<=30,k<=1000000000,m<=10000). <br />接下来n行,每行n个数,表示这个矩阵.<br /> <br />关于输出:输出矩阵S对m取模后的值,包括n行,每行n个数<br /> <br />例子输入:2 2 4<br />0 1<b原创 2010-12-07 10:00:00 · 2969 阅读 · 0 评论 -
约瑟夫问题(POJ2746;PG1078)
<br />问题描述:约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。<br />关于输入:每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是: <br /><br />0 0<br />关于输出:对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号原创 2010-12-07 09:21:00 · 2340 阅读 · 0 评论