日常水题
p1008三连击、UVa340猜数字游戏的提示、Uva1583生成元,POJ-2271(模拟),fzcoj1787(模拟)
p1008三连击将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。
一个个遍历过去,判断三个数字的每个位的数字是否重复,这里用的办法是先提取出每个位的数字,然后排序,将其与数组下标对齐,如果不数组的值与下标的值不相等,则出现重复。
这里可以用于构造几个数字,然后判断出现的数字是否重复。
1234567891011121314151617181920212223242526#include<iostream>#include<algorithm>using namespace std;int i, j, a[15];bool ans;int main(){ for (i = 123; i <= 329; i++) { a[1] = i % 10; a[2] = i % 100 / 10; a ...
c++string
string小结
开始
string类由头文件string支持
(头文件string.h和cstring支持对c-风格字符串进行操纵的c库字符串函数,但不支持string类)
string类将string::nops定义为字符串最大长度,通常为unsigned int最大值
string与wstring:
string是针对char而预先定义的特化版本,wstring是针对wchat_t而预先定义的特化版本
使用wstring可以让你使用宽字符集,例如Unicode或某些亚洲字符集‘
所有字符串类型都采用相同接口,所以两者用法都一样。
C++字符串并不以’/0’结尾
注意对象名不会被看做是对象地址,比如string s(20, ‘x’); s不是指针,s+6没有意义,而&s[6]却是指针。
字符串各种操作函数
Name
Feature
swap()
交换两个字符串的内容
=, assign()
赋以新值
+=, append(), push_back()
在尾部添加字符
insert()
插入字符
erase()
删除字符
...
emacs官方文档阅读笔记
基本命令行
翻页浏览命令C-v 向前移动一屏M-v 向后移动一屏C-l 重绘屏幕,并将光标所在行置于屏幕的中央
光标移动命令C-f 向右移动一个字符C-b 向左移动一个字符
M-f 向右移动一个词【对中文是移动到下一个标点符号】M-b 向左移动一个词【对中文是移动到上一个标点符号】
C-n 移动到下一行C-p 移动到上一行
C-a 移动到行首C-e 移动到行尾
M-a 移动到句首M-e 移动到句尾
M->文章末尾
M-<文章首段
文本编辑命令< DEL > 删除光标前的一个字符【这里的DEL指键盘上的Backspace键】C-d 删除光标后的一个字符
M-< DEL > 移除光标前的一个词M-d 移除光标后的一个词
C-k 移除从光标到“行尾”间的字符【移除其实相当于其他编辑器里的剪切】M-k 移除从光标到“句尾”间的字符
C-y 在光标所在处插入最后移除的文字【这个召回命令其实相当于其他编辑器里的粘 ...
c++小总结2
虚函数与继承,转换函数
虚函数与继承12345678class shape{ public: virtual void draw() const = 0; //pure virtual,一定要定义 virtual void error(const std::string& msg); //impure virtual,希望重新定义,而且已有默认定义 int objectID() const; //non-virtual,不希望重新定义}
转换函数情况11234567891011121314151617class Fraction{ public: Fraction(int num, int den = 1) : m_numerator(num), m_denominator(den) { } //(1) operator double() const //转换函数 { return (double)(m_numerator / m_denominator ...
c++小总结
构造函数不能共存例子、构造函数放在private、const在函数前与后、相同class的各个objects互为友元、设计一个类注意事项、操作符重载、new与delete、static、继承,复合,委托
1. 构造函数不能共存例子1234567(1)complex (double r = 0, double i = 0) : re(r), im(i){ }(2)complex() : re(0), im(0) { }
当使用complex c1;或complex c2();时,两种创建办法都没有参数,编译器可以调用(1),对于(2),虽然函数有参数,但是有默认值,也可以调用,所以会冲突,不能共存。
2. 构造函数放在private一般我们不把构造函数放在private里面,因为这样不能被外界调用。其实也有特殊情况,下面列举一种,Meyers Singleton设计模式
123456789101112131415161718class A{public: static A& getInstance(); setup() ...
过年是不可能过年的
如今新年越来月没有年味了,对于我来说,给电脑换个壁纸等于过年
</div>
壁纸,当然得骚红,毕竟
男人可以不帅,但是不能不骚
今年春晚有4k源,但是在youtube上面嗨,估计也是给外国佬当做催眠剂把,毕竟
春晚一分钟,稳睡一晚上
无聊来谢谢随笔,其实也不算随笔,就是在xjb写
其实吧,是为了测试下悠闲谈板块而已
放假后用hexo和github搭建了个博客,这可能是好事,也可能是坏处,毕竟有很多东西都有两面性
然后,就没有然后了,现在是除夕下午,衣着简陋,无心过年,唯有农药
(说,农药给了你多少钱)
STL之set和multiset
set和multiset容器的操作函数和一道题:HDU 4989 Summary
一、开始
使用set或multiset之前,必须加入头文件
set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。
set 和multiset容器的内部结构通常由平衡二叉树(balancedbinary tree)来实现。当元素放入容器中时,会按照一定的排序法则自动排序,默认是按照less<>排序规则来排序。两者不同之处在于,multisets允许元素重复,而set不允许重复。 平衡二叉树: </div>
这种自动排序的特性加速了元素查找的过程,但是也带来了一个问题:不可以直接修改set或multiset容器中的元素值,因为这样做就可能违反了元素自动排序的规则。如果你希望修改一个元素的值,必须先删除原有的元素,再插入新的元素。
sets和multisets具有以下特点:
不提供直接用来存取元素的任何操作元素
通过迭代器进行元素的存取。二、set和multis ...
STL之vector
vector的声明、向量操作、访问方式、赋值操作、安插,移除相关操作、应用实例。一道习题(第k个约数)
一、 开始:
要使用vector必须包含头文件< vector >
vector可以看成是动态一维数组
vector可以存在重复元素(set不能存在)
vector迭代器是随机存取迭代器,所以对任何一个STL算法都奏效
在末端附加或删除元素时,vector的性能相当好。但是如果在前端或在中部安插或删除元素,性能就不怎么样了。因为操作点之后的每一个元素都必须移到另一个位置,而每一次移动都得调用赋值操作符二、 vector的声明:12345678910vector<type> a;/*type可以是int,double等等.此时a.size()为0,但是因为是动态的,所以大小会可能改变*/int n; cin >> n;vector<type> a(n); //动态分配vector<int> a(100, 0);//声明一个存放了100个0的整数vector,其大小没有被固定为100,还可以加数据vector<type&g ...
一步一步写出c++带指针类实例(标准库string部分)
共16步本篇文章注重与complex篇的区别,可能不那么详细
流程:
写出主体(行1,2,11)
考虑private里面要放的数据,字符串,当然是放很多字符,一种想法是里面放一个数组,但是这种数组可能不是很好,因为数组你得指明多大,太大或太小都不好。所以我们选择另一种做法,在里面放一个指针,将来要分配多大内存,就动态去分配,用new的方式。一个指针多大,在传统的32位电脑中是4个字节,所以无论以后字符串里面内容是什么,字符串这个对象本身就是4个字节。(行9,10)
然后到了准备函数的环节,首先当然是构造函数,要使外界创建string,一定要调用构造函数,而且要放到public(当然也有放在private里面的,只是很少)。
存进来以后当然不可能要改变里面的东西,我们只是拿来当初值而已,所以加const,并且给默认值为0。(行4)
class里面有指针,所以要去关注三个重要特殊的函数。
第一个是拷贝构造函数。既然是拷贝构造,那么就是相当于它自己,则参数里面类型用String。再考虑下引用和const的问题,引用必须的。(行5)我们传进来只是复制个蓝本,没有考虑要去改变,所以加上const ...
一步一步写出c++不带指针类实例(标准库complex部分)
总共有19步
流程:
首先先养成防卫式习惯,在头文件中加入下面三行,防止重复包含(行2,3,19)
然后写出主体(行4,5,18)
考虑下这个复数需要什么数据,当然这个数据应该放在私有部分(private)。 复数有实部虚部,可得出private变量的定义(行15,16)
接下来考虑需要什么函数来实现,这些函数当然需要操作在复数身上,然后 函数是对外发表的,所以放在public里面(行7,行8)
首先任何一个class都有构造函数,然后构造函数的语法是什么? 构造函数名称与class名称相同,没有返回类型。接着,一个构造函数应该接收什么参数? 在这个例子中,有实部虚部,我们就应该有实部虚部的参数,然后我们就考量要不要默认值。
我们还要考虑这个函数的传递是按值传递还是按引用传递? 这个函数中传值或者传引用区别不大,所以随便选择一个
还得想到构造函数有个很特别的语法—初始列,一般最好运用初始列
然后考虑构造函数还需要干什么,这个例子已经不需要什么操作,在别的地方可能要在构造函数中分配一些内存,开个窗口,或者开个文件等等(行9,10)
接下来考虑这个class要实现什么功能,在这个例子中,我 ...