草庐IT

algorithm

全部标签

C++:将十六进制转换为十进制

我正在寻找一种将hex(hexadecimal)轻松转换为dec(decimal)的方法.我找到了一个简单的方法来做到这一点:intk=0x265;cout但是我无法输入265。无论如何,它是否可以像那样工作:输入:265输出:613有什么办法吗?注意:我试过:intk=0x,b;cin>>b;cout它不起作用。 最佳答案 #include#include#includeintmain(){intx,y;std::stringstreamstream;std::cin>>x;stream>std::hex>>y;std::cout

c++ - 能被1到20的所有数整除的最小数?

我做了这个问题[ProjectEulerproblem5],但编程方式非常糟糕,请参阅c++中的代码,#includeusingnamespacestd;//tofindlowestdivisblenumbertill20intmain(){intnum=20,flag=0;while(flag==0){if((num%2)==0&&(num%3)==0&&(num%4)==0&&(num%5)==0&&(num%6)==0&&(num%7)==0&&(num%8)==0&&(num%9)==0&&(num%10)==0&&(num%11)==0&&(num%12)==0&&(num%

c++ - x86 上两个 128 位整数的高效乘法/除法(无 64 位)

编译器:MinGW/GCC问题:不允许使用GPL/LGPL代码(GMP或任何bignum库对于这个问题来说都太过分了,因为我已经实现了该类)。我构建了自己的128位固定大小的大整数类(旨在用于游戏引擎,但可以推广到任何用例)并且我发现当前乘法的性能并且除法操作非常糟糕(是的,我已经对它们进行了计时,见下文),并且我想改进(或更改)执行低级数字运算的算法。当谈到乘法和除法运算符时,与类里面的几乎所有其他运算符相比,它们的速度慢得令人无法忍受。这些是相对于我自己的计算机的近似测量值:RawtimesasdefinedbyQueryPerformanceFrequency:1/60sec31

c++ - "container"和 "data structure"有什么区别?

什么是容器?据我了解:抽象数据类型只是对数据存储方式和允许对该数据进行的操作的逻辑描述。例如,堆栈被定义为具有压入、弹出等操作和后进先出访问的数据类型。一个数据结构就是这个抽象定义的实际实现,在一些计算机编程语言中,例如C++中的栈,在标准库中的实现是std::stack。首先,请纠正/加强我目前对上述区别的理解。其次,容器到底是什么?我经常听到这个词。和我定义的数据结构一样吗?此外,维基百科为这些术语提供了三个单独的条目。 最佳答案 没什么,真的。正如我们人类喜欢做的那样,它们只是同一个词的两个词。然而,afaik,官方CS术语是

c++ - 旋转后字典序最小的字符串

我正在尝试解决thisprobleminspoj我需要找到给定字符串的旋转次数,使其在所有旋转中按字典序排列最小。例如:原文:ama第一次轮换:maa第二次旋转:aam这是字典序最小的旋转,所以答案是2。这是我的代码:strings,tmp;charss[100002];scanf("%s",ss);s=ss;tmp=s;inti,len=s.size(),ans=0,t=0;for(i=0;i我收到此解决方案的“超出时间限制”。我不明白可以进行哪些优化。如何提高解决方案的速度? 最佳答案 您可以使用修改后的suffixarray.

c++ - Ramer-Douglas-Peucker 路径简化算法

我在阅读这里的文章后实现了一个路径简化算法:http://losingfight.com/blog/2011/05/30/how-to-implement-a-vector-brush/它非常适合我为我的游戏生成优化的关卡几何体。但是,我现在正在使用它来清理a*寻路路径,它有一个奇怪的边缘案例,失败得很惨。这是它工作的屏幕截图-优化从红色圆圈到蓝色圆圈的路径。淡绿色线是a*输出,浅白色线是优化路径。这是失败的截图:这是我的代码。我将文章中的ObjC代码改编为C++备注:vec2fvec是std::vector>,而“real”只是一个typedef的float。voidrdpSimpl

c++ - 是否有计算在单色背景上绘制的 Sprite 边界矩形的算法?

想象一个普通的矩形位图,比方说,1024x768像素填充白色。位图上绘制了一些(非重叠的)Sprite:圆形、正方形和三角形。是否有一种算法(甚至可能是C++实现)在给定位图和背景颜色(白色,在上例中)的情况下,生成一个列表,其中包含每个Sprite的最小边界矩形?这是一些示例:在左侧,您可以看到我的代码给出的示例位图(以及“背景”为白色的信息)。在右侧,您可以看到相同的图像以及四个形状的边界矩形(红色);我正在寻找的算法计算这些矩形的几何形状。一些绘画程序具有选择形状的类似功能:它们甚至可以计算看似任意的边界多边形。无需手动拖动选择矩形,您可以单击“背景”(什么是背景,什么不是由某个

c++ - 一种在一维数组(位图)内迭代矩形区域的算法

这是一个奇怪的问题,我很难为它写一个标题。我正在处理像素(更具体地说是位图),无法弄清楚实用地访问每个数组单元格的(简单)数学。我的Canvas是[n16x16]像素,n始终为1或更大。这是一张基本的n=2Canvas的照片:http://i.imgur.com/mabwQfJ.png我想让我的神奇算法做的是从0运行到495而不触及浅灰色区域,然后从16运行到512(实际上是单元格511,我的错)而不触及深灰色区域。因此,0到15,跳过16到31,然后是32到47,等等。对于n=3:http://i.imgur.com/TqJMWl6.png在这种情况下,0-735会跳过较浅的灰色区域

c++ - 可排列的最长链条

我在比赛的某个地方发现了这个问题,但还没有想出解决方案。Ihavethepositiveintegers.Ihavetofindlongestsubsetthatamongeachtwoneighbourelementsonedividesanother.我正在做的是:我正在创建图表。然后我正在连接节点,在这些节点中,数字彼此分开。之后我使用DFS(一个节点可以连接两个节点)。但并不是所有的测试用例在系统中都是真实的。在使用DFS之前是否必须对数组进行排序?也许有特殊的(动态)算法?失败的测试用例:N=5113713我的代码给出了输出4。但是如果我像这样安排这个数组:317113输出为

c++ - 在基于文本的冒险游戏中,如何防止长而困惑的条件代码?

我正在创建一个基于文本的C++冒险游戏。在这个游戏中,你选择去哪里,你选择做什么等等,都会有很多的可能性。我的问题是,如何防止这变得极其困惑。示例:假设在游戏的某一时刻,系统会询问您是去森林还是去沙漠。如果您选择沙漠,那将是与森林完全不同的故事情节。那么我该如何防止我的代码看起来像这样。if(playergoestothedesert)advice?{/*Wholestorylineofthedesert*/elseif(playergoestotheforest){/*Wholestorylineoftheforest*/在这些故事情节中,会有更多类似的条件,以及更详尽的故事情节,所