`
文章列表
一,字符串转化 将字符串转换成整数:atoi 将整数转换为字符串:itoa 浮点数与字符串的转换 1)字符串转化为整数 需要注意的地方: 考虑要缜密,注意是否为数字字符; 判断是否为NULL 开头的‘+’‘-’符号的判断 #include "stdio.h" #include "string.h" #include "assert.h" int isDigit(char c) { if(c>='0'&&c<='9') return 1; e ...
序:刘翔今天再一次倒在起跑线上,我作为翔子的Fans,盯着屏幕看刘翔起跑,当他第一个栏摔倒时,我的心碎了,情绪异常低落,久久难以平复。然后给老爸发短信抱怨:刘翔退赛了,为什么又是因伤退赛?我难受。老爸轻 ...
一,问题:n个拿着1元,n个人拿着2元去买票。票价一元,且售票元只能用n个人购票的一元给2元的找零。问有几种排列方法 分析:卡特兰数方法 递推公式:F(2*n) =F(0)*F(2(n-1)) +F(1)*F(2(n-2))+……+F(2(n-1))*F(0) F(n) =F(0)*F(n-1) +F(1)*F(n-2)+……+F(n-1)*F(0) 解答: 所有序列的个数 :C (2n,n) (ps:由于数学函数难打,这里表示从2n个位置中挑选n个存放1) 非法序列的个数 ...
一,问题: 1. 给定一个源区间[x,y]和N个无序的目标区间[x1,y1] [x2,y2] ... [xn,yn],判断源区间[x,y]是不是在目标区间内。 2. 给定一个窗口区域和系统界面上的N个窗口,判断这个窗口区域是否被已有的窗口覆盖。 二,解法: 问题一: 先用区间的左边界值对目标区间进行排序O(nlogn),对排好序的区间进行合并O(n),对每次待查找的源区间,用二分查出其左右两边界点分别处于合并后的哪个源区间中O(logn),若属于同一个源区间则说明其在目标区间中,否则就说明不在。 #include <iostream> #include < ...
一,问题: 1. 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为两个子数组,子数组的元素个数不限,并使两个子数组之和最接近。 2. 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组之和最接近。 二,分析: 假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然: S(k, 1) = {A[i] | 1<= i <= k} S(k, k) = {A[1]+A ...
一、SQL语句 (1)Select 查询语句 语法:SELECT [ALL|DISTINCT] <目标列表达式> [AS 列名] [,<目标列表达式> [AS 列名] ...] FROM <表名> [,<表名>…] [WHERE <条件表达式> [AND|OR <条件表达式>...] [GROUP BY 列名 [HAVING <条件表达式>]] [ORDER BY 列名 [ASC | DESC]] 解释:[ALL|DISTINCT] ALL:全部 DISTINCT:不包括重 ...
微软的一道面试题: 如:abcbcbcabc,这个连续出现次数最多的字串是bc 一,考虑边界问题。 二,实现优化笛卡尔积组合, 总体我是这样想的:就是纵向切出字符串的连续组合集合,在横向一对一跳跃比较集合元素。 例如:abcbcabc<wbr><br> 一,纵向切:<br> 得到所有字符串组合,注意:这里要求的是最多连续子字符串,其实就是优化笛卡尔积的原则,也是边界。<br><wbr><span></span>字符串共8位,以子串的长度为1,从字符串第一位开始切,且称为切:<b ...
一,printf 1)作用:产生格式化输出的函数(定义在 stdio.h 中)。 2)用法:int printf(const char *format,[argument]); format 参数输出的格式,定义格式为:%[flags] [width] [.perc] [F|N|h|l] type    规定数据输出方式,具体如下:    1.type 含义如下:    d 有符号10进制整数    i 有符号10进制整数    o 无符号8进制整数    u 无符号10进制整数   x 无符号的16进制数字,并以小写abcdef表 ...
int、char、short等非浮点数在内存中是按照补码的形式存储的。 1)按位取反(~) 单目运算符,参与运算的数和结果均以补码方式出现。 功能:各位取反,如果首位为1则其真实值为:除符号位外,各位取反末尾加1。 示例:~100 = - 101 (100) 的二进制表示为: 0110 0100 ~100 的二进制表示为: 1001 1011 所以等号左边=1001 1011 由于int、char、short均按照补码存储,则实际数为:1110 0100 = -101 2)按位与(&a ...
一,强制类型转换   当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。强制类型转换不改变原来数据的类型。   C++中强制类型转换函数有4个: const_cast(用于去除const属性) static_cast(用于基本类型的强制转换) dynamic_cast(用于多态类型之间的类型转换) reinterpreter_cast(用于不同类型之间的指针之间的转换,最常用的就是不 ...
序:对于一个空类,编译器默认生成四个成员函数:默认构造函数、析构函数、拷贝构造函数、赋值函数 一,默认构造函数 默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。   如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,称为合成的构造函数(synthesized default constructor)。 C++语言为类提供的构造函数可自动完成对象的初始化任务 ...
一,构造函数与析构函数auto_ptr在构造时获取对某个对象的所有权(ownership),在析构时释放该对象。我们可以这样使用auto_ptr来提高代码安全性:int* p = new int(0);auto_ptr<int> ap(p);从此我们不必关心应该何时释放p, 也不用担心发生异常会有内存泄漏。 这里我们有几点要注意: 1) 因为auto_ptr析构的时候肯定会删除他所拥有的那个对象,所有我们就要注意了,一个萝卜一个坑,两个auto_ptr不能同时拥有同一个对象。像这样:int* p = new int(0);auto_ptr<int> ap1(p); ...
一,入门 const 指针 指针指向的内容不能变,指针可以改变指向 指向const的指针 指针不可以改变指向,指针指向内容可以变 #include "stdio.h" int main() { //const 指针 (指针指向的内容不能变,指针可以改变指向) int a = 5;    int b = 6;    const int *ptr = &a;    *ptr = 8; //error    ptr = &b; //ok;    //指向const的指针 (指针不可以改变指向 ...
一,函数指针 1)定义:指向函数的指针变量。“函数指针”本身是指针变量,该指针变量指向函数。 2)区别:这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。 3)说明:C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。 4)用途:函数指针有两个用途:调用函数和做函数的参数。   5)函数指针的声明方法为:   函数类型 (标志符 指针变量名) (形参列表)    注1:“函数类型”说明函数的返回类型, “(标志 ...
一,要求:自己动手编写 atoi(char *str)函数,功能是将字符串变成数字 简单版本: 需要考虑的地方 1)正负号 2)仅仅考虑十进制 3)如何把数字 字符 变成整数 #include <iostream> using namespace std; int StrToInt(char * str) { int value = 0; int sign = 1; if(*str == '-')//负号 { sign = -1; str++; } while ...
Global site tag (gtag.js) - Google Analytics