摘要:
使用标准C++中string类,要包含头文件 string类的构造函数 string类的字符操作 //const char &operator "" const; cout 用于输入 string s; cin s; //同样重载运算符operator","=","时返回1,头文件 例如: stri 阅读全文
摘要:
介绍 运算符重载的目的就是 为自定义类型定义运算规则 。对于int、double等数据类型,我们已经习惯于使用A+B, A B, A B等方式对其进行运算,那么对于我们自己定义的类型,如何也能实现这种形式的运算呢?这就是运算符重载要达到的效果。 高精度运算是个典型的例子:在天文学计算中会涉及天文数字 阅读全文
摘要:
介绍 C++的一个重要组成部分 STL (Standard Template Library),即标准模板库,是一些高级数据结构和算法的集合:高级数据结构(容器)主要包括list、set、vector、map等,这些会在后面的学习中介绍。STL中还包括一些常用的算法,如排序、查找等。 这些高级数据结 阅读全文
摘要:
思路 汉诺塔是递归思想最经典的例子,通过递归不断缩小问题,将n个盘子的问题简化n 1个,直至1个。 三个盘子,分别为A:from,B:to,C:by(A为起点盘,B为目标盘,C为中转盘) 过程 1. 将1~n 1号盘子从A移动到C,借助B,递归进行 2. 将第n号盘子从A移动到B 3. 将1~n 1 阅读全文
摘要:
思路 很容易看出规律,一个运算符出现,其后就一定需要左值和右值,而左值和右值有可能还是运算符,这就需要继续递归。递归终止的条件就是遇到数字。 逆波兰表达式其实是构造成了一颗二叉树 例程 include include //atof函数用于将以字符数组形式 //存在的浮点数转化为浮点数 //cstdl 阅读全文
摘要:
思路 可以把任意一个数转化为 2^a+2^b+2^c+...+2^n 例如137的二进制为 10001001 ,这就等效于 2^7+2^3+2^0 以上结果如何通过程序循环处理呢?需要把数字n分解为上述公式,对指数(a,b,...n)依次进行递归 要对整个结果进行递归生成字符串组后一次性输出比较麻烦 阅读全文
摘要:
整体思路 这是一个典型的递归型问题: 1. 临界点:如果只有1级台阶,有1种走法(一次一步);如果有2级台阶,则有2种走法(一次一步或一次两步) 2. 递归方法,对于n级台阶,如果第一次走1步,还剩n 1级台阶,n 1级台阶的走法有 f(n 1) 步,如果第一次走2步,还剩n 2级台阶,n 1级台阶 阅读全文
摘要:
整体思路 对于任意的p,q,r,可能使得p q=r的最小进制应该是p,q,r三个数的所有数位中最大的数字+1,例如,6,9,42三个数中所有数位中最大的数字是9,故可能成立的最小进制是9+1,即10。题目告诉我们,最大进制B using namespace std; int p, q, r; //定 阅读全文
摘要:
整体思路 本题如果使用scanf每次读入一个单词、比对替换后再进行输出的话就十分简单,使用这种方法必须要用数组把读入的所有单词存起来,读入的count个单词的前n 2个是原文,第n 1个是查找的单词,第n个是替换值。 如果要求设计一个函数 replace(原文,被替换单词,替换值) ,这就稍有些难度 阅读全文
摘要:
整体思路 这里需要大量使用素数,必须能够想到 只求出M到N之间的素数是不够的 ,因为M到N之间数字的反序有可能是大于M或小于N的数字,例如M=2,N=20,那么19的反序91大于20,所以使用 埃拉拖色尼 算法计算素数表的时候要让范围尽可能大,根据题目要求,设计为1~100000。 本题也可以尝试不 阅读全文