摘要:
如题,比如输入1 1 1 1 2 2 2 2 3 3 3 4 4 4 4 4 4 5 5 5 ,那么输出的应该是1 2 ,因为他们出现的频率相同的情况下,出现的频率是最高的,附上代码 1 #include 2 3 using namespace std; 4 5 //简化一下 设置输入的文字的... 阅读全文
摘要:
这个问题跟前面的删除所有值为X的相似,主要的思想就是用了一个指针,表示当前有效元素的位置#include #include #include using namespace std;#define n 100int main(){ char SZ[n]; memset(SZ,'\0',n); cin>>SZ; int len = strlen(SZ); clock_t start,end;//用于计时 start = clock() ; //将第一个元素置为有效元素,计数器 +1,num表示这个阶段有可能重复的数 int count = 1... 阅读全文
摘要:
问题看起来很简单,但是这里有个限制,就是算法的时间复杂度位O(n),空间复杂度为O(1),下面上代码#include #include #include using namespace std;#define n 100int main(){ char SZ[n]; char del; memset(SZ,'\0',n); cin>>SZ; cin>>del; clock_t start,end;//用于计时 start = clock() ; int length = strlen(SZ);//获取当前字符串长度 int count... 阅读全文
摘要:
还是之前的问题,求出MAXSIZE以内的所以质数下面我们看下原理所有的合数都可以分解为两个数的乘积,那么我们建立一个isPrime[MAXSIZE+1]的表,先把所有的元素设置成默认为是质数,true,设置两重循环,将i*j处的值设置成false,这样最后得到的是true元素对应的角标就是质数了,下面附上代码:#include #include using namespace std;#define max 99999int prime[max+1];bool isPrime[max+1];int count = 0;int main(){ for (int i = 0;i #inclu... 阅读全文
摘要:
问题说明:除了自身之外,无法被其它整数整除的数称之为质数,要求质数很简单,但如何快速的求出质数则一直是程式设计人员与数学家努力的课题, 在这边介绍一个着名的 Eratosthenes求质数方法。解法:首先知道这个问题可以使用回圈来求解,将一个指定的数除以所有小于它的数,若可以整除就不是质数,然而如何减少回圈的检查次数?如何求出小于N的所有质数?我们先来看一个丧心病狂的低效率的解决方式://检验质数bool checkZS(int a){ for (int i = 2;i #include using namespace std;#define n 99999int main(){ ... 阅读全文
摘要:
问题: 蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的基本原理为以乱数配合面积公式来进行解题,这种以机率来解题的方式带有赌博的意味,虽然在精确度上有所疑虑,但其解题的思考方向却是个值得学习的方式。算法说明:蒙地卡罗的解法适用于与面积有关的题目,例如求PI值或椭圆面积,这边介绍如何求PI值;假设有一个圆半径为1,所以四分之一圆面积就为PI,而包括此四分之一圆的正方形面积就为1,如下图所示:其中c为落在圆中的次数,n为落在正方形中的次数代码如下:/*问题:蒙地卡罗法求 PI蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的基本原理为以乱数配合 阅读全文
摘要:
问题说明:假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品,假设是水果好了,水果的编号、单价与重量如下所示:0李子4KGNT$45001苹果5KGNT$57002橘子2KGNT$22503草莓1KGNT$1100解法背包问题是关于最佳化的问题,要解最佳化问题可以使用「动态规划」 (Dynamicprogramming) ,从空集合开始,每增加一个元素就先求出该阶段的最佳解,直到所有的元素加入至集合中,最后得到的就是最佳解。下面我们看下代码:/*问题:假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品算法说明:采用动态规划,在当前阶段求解 阅读全文
摘要:
算法说明:在计算机科学里,Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法。它由Bob Boyer和J Strother Moore设计于1977年。此算法仅对搜索目标字符串(关键字)进行预处理,而非被搜索的字符串。虽然Boyer-Moore算法的执行时间同样线性依赖于被搜索字符串的大小,但是通常仅为其它算法的一小部分:它不需要对被搜索的字符串中的字符进行逐一比较,而会跳过其中某些部分。通常搜索关键字越长,算法速度越快。它的效率来自于这样的事实:对于每一次失败的匹配尝试,算法都能够使用这些信息来排除尽可能多的无法匹配的位置。算法原理:假设被检索文字列是“1234567890” 阅读全文
摘要:
问题:今日的一些高阶程式语言对于字串的处理支援越来越强大(例如Java、Perl等),不过字串搜寻本身仍是个值得探讨的课题.今天看到这个题目,我在想,能不能通过多线程的形式,一个线程用于搜索位置,主线程用于比对,这样子同一时刻在做两件事,效率就提高了,我们来看下代码:#include #include #include using namespace std;#define MAXSIZE 1690#define Search_Size 3//上面定义搜索的长度,下面定义搜索的字符char SH[Search_Size] = "ab";char A[MAXSIZE] = & 阅读全文
摘要:
#include #include #include using namespace std;int MG[7][7]={{2,2,2,2,2,2,2}, {2,0,0,0,0,0,2}, {2,0,2,0,2,0,2}, {2,0,0,2,0,2,2}, {2,2,0,2,0,2,2}, {2,0,0,0,0,0,2}, {2,2,2,2,2,2,2}};void printMG(){ for (int i = 0;i LJ;//定义一个栈,用于保存路径int SPosit[2] = {1,1};//入口位置int EPosit[2] = {5,5};//出口位置bool state... 阅读全文