cout

算法训练 进制转换

你说的曾经没有我的故事 提交于 2020-01-13 09:34:35
算法训练 进制转换 时间限制:1.0s 内存限制:256.0MB 锦囊1 使用进制转换的方法。 锦囊2 和普通的进制转换类似,还是除P取余倒着数,但注意取余是取正的部分。 问题描述   我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如:123可表示为 1*102+2*101+3*100这样的形式。   与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式。一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数。如果是以R或-R为基数,则需要用到的数码为 0,1,....R-1。例如,当R=7时,所需用到的数码是0,1,2,3,4,5和6,这与其是R或-R无关。如果作为基数的数绝对值超过10,则为了表示这些数码,通常使用英文字母来表示那些大于9的数码。例如对16进制数来说,用A表示10,用B表示11,用C表示12,用D表示13,用E表示14,用F表示15。   在负进制数中是用-R 作为基数,例如-15(十进制)相当于110001(-2进制),并且它可以被表示为2的幂级数的和数:   110001=1*(-2)5+1*(-2)4+0*(-2)3+0*(-2)2+   0*(-2)1 +1*(-2)0   

单向队列,双向队列,优先队列的基本用法

佐手、 提交于 2020-01-12 21:44:02
1.单向队列,意思就是只能从队列后面加入元素,遵循先进先出原则; # include <queue> # include <iostream> using namespace std ; int main ( ) { queue < int > q ; q . push ( 5 ) //在队列末尾插入一个元素5; q . pop ( ) //删除队列的第一个元素; q . front ( ) //返回队列的第一个元素; q . empty ( ) //判断队列是否为空,如果为空返回true; q . size ( ) //返回队列中有多少元素; //遍历队列中元素可以为: while ( ! q . empty ( ) ) { cout << q . front ( ) << endl ; q . pop ( ) ; } return 0 ; } 2.双向队列,意思是既可以从队尾插入元素,也可以从队列前插入元素 # include <deque> # include <iostream> using namespace std ; int main ( ) { deque < int > q ; deque < int > :: iterator it1 //正向迭代器 deque < int > :: reverse_iterator it2 ; //反向迭代器 q . push

C++程序设计POJ》《WEEK5 继承和派生》《编程填空》

巧了我就是萌 提交于 2020-01-12 11:42:47
#include <iostream> using namespace std; class Base { public: int val; Base() { cout << "Base Constructor" << endl; } ~Base() { cout << "Base Destructor" << endl; } }; class Base1 :virtual public Base { }; class Base2 :virtual public Base { }; class Derived :public Base1, public Base2 { }; int main() { Derived d; while (1); return 0; }// 打印输出 // Base Constructor//Base Destructor https://blog.csdn.net/qq_23908539/article/details/51454521 描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8. ijAl- 9. ijAl-mnop 10. qrst-abcd- 11. abcd-qrst-abcd- uvw

Standard C++ Episode 11

こ雲淡風輕ζ 提交于 2020-01-12 07:11:23
一、标准模板库(STL) (p.s. STL中的常用实用工具 auto_ptr string pair ) 1.定义了一系列的容器模板(类模板),实现泛型化的数据结构。 1)向量(vector, 这里说的"向量"就是数组), 向量内存连续,支持下标访问和随机迭代,只有在尾部进行插入和删除效率才比较高。 2)列表(list),内存不连续,不支持下标访问和随机迭代,在任何位置进行插入和删除效率都很高。 3)双端队列(deque),内存连续,支持下标访问和随机迭代,在首尾两端进行插入和删除效率都比较高。 以上三种合称为线性容器。 4)堆栈(stack),后进先出 5)队列(queue),先进先出 6)优先队列(priority_queue),优者先出 以上三种合称为适配器容器,通过某种线性容器适配。 7)映射(map),是键值对(KVP)的集合,按键升序,键唯一。 采用了有序二叉树(二叉搜索树)数据结构实现。 8)集合(set),没有值只有键的映射, 按键升序。 9)多重映射(multimap),允许重复键的映射,即键不唯一。按键升序。 10)多重集合(multiset),没有值只有键的多重映射。按键升序。 以上四种合称为关联容器。通过有序树表达数据的关联性。按键升序。 2.泛型函数(函数模板) template<typename T> void swap (T& a, T& b) {

【翻译】std::remove - C++ Reference

 ̄綄美尐妖づ 提交于 2020-01-12 00:12:43
   函数模板   std:: remove                     头文件<algorithm> template <class ForwardIterator, class T> ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val);   从一个范围中删除某值   [注释:本文是 std::remove 算法的参考手册,关于 <cstdio.h> 头文件下的 remove 函数,请参见: http://www.cplusplus.com/reference/cstdio/remove/ ]   对范围 [first , last ) 进行转换(transform),移除其中所有与 val 相等的元素,返回一个指向新范围的 end 的迭代器。   (译注:transform 是 STL 的一个算法,不知道 std::remove 的底层是否经由 std::transform 实现。)   函数不改变所包含的“范围对象”的属性(换句话说,函数不改变数组或者容器的真实 size ):元素被移动是通过下一个不等于 val 的元素,来替换当前等于 val 的元素,而且会通过返回一个指向新 end 的迭代器,来指示出新的稍“短”一些的范围

时间2 boost:date 年月日

笑着哭i 提交于 2020-01-11 04:26:49
// 忽略警告 // 调试日期:2019-03-13 星期3 #define _SCL_SECURE_NO_WARNINGS #pragma warning(disable : 4996) #include <assert.h> #include <iostream> #include <boost/integer.hpp> #include <time.h> #include <boost/timer.hpp> // timer #include <boost/progress.hpp> // progress_timer、progress_display #include <sstream> // stringstream #include <boost/date_time/gregorian/gregorian.hpp>// date_time using namespace boost::gregorian; using namespace boost; using namespace std; #include <Windows.h>// Sleep int main() { /////////////////////////////////////////////////////////////////////////// // date_time库范围[1400-01

【DS】第四章-二叉树

╄→尐↘猪︶ㄣ 提交于 2020-01-11 00:40:41
树的概念及结构 什么是树   树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多 个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结 点可以分为多个不相交的子树。   下图就是一棵常见的树。 树的常用名词   节点的度:一个节点含有的子树的个数称为该节点的度;   叶节点或终端节点:度为0的节点称为叶节点;   非终端节点或分支节点:度不为0的节点;   如上图:D、E、F、G…等节点为分支节点 双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;   孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;   兄弟节点:具有相同父节点的节点互称为兄弟节点;   树的度:一棵树中,最大的节点的度称为树的度;   节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;   树的高度或深度:树中节点的最大层次;   堂兄弟节点:双亲在同一层的节点互为堂兄弟;   节点的祖先:从根到该节点所经分支上的所有节点;   子孙:以某节点为根的子树中任一节点都称为该节点的子孙;   森林:由m(m>=0)棵互不相交的树的集合称为森林; 树的表示  

剑指offer-用两个栈实现队列

前提是你 提交于 2020-01-10 11:05:10
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型 思路 一个栈用来存放,另一个栈用来输出,输出的时候注意要将输出栈的全部内容输出完毕后才能填充数据 AC代码 # include <iostream> # include <stack> using namespace std ; class Solution { public : void push ( int node ) { stack1 . push ( node ) ; } int pop ( ) { while ( 1 ) { if ( ! stack2 . empty ( ) ) { int y = stack2 . top ( ) ; stack2 . pop ( ) ; return y ; } while ( ! stack1 . empty ( ) ) { stack2 . push ( stack1 . top ( ) ) ; stack1 . pop ( ) ; } } } private : stack < int > stack1 ; stack < int > stack2 ; } ; int main ( ) { Solution a ; cout << "11122" << endl ; a . push ( 1 ) ; a . push ( 2 ) ;

Accelerate C++ 学习笔记8 第三章 使用批量数据 心得

房东的猫 提交于 2020-01-10 08:16:49
1, 文件结束标志 windows(ctr + z) linux/Unix(ctr + d) 2, 如果两个以上字符串字面量仅仅被空白符分隔开,那么这些字符字面量就会被自动连接到一起。 eg. cout << "Enter all your grade ," << "followed by end-of-file: " ; 等价于: cout << "Enter all your grade ,followed by end-of-file:" *好处:对于一些过长的程序,对它们的阅读会非常的不方便,将字符串字面量分成两部分之后,就可以避免出现这种情况。 3, 未初始化 如果不讲变量指定初始值,那就要隐含地依赖初始化 默认初始化操作取决于变量的类型 自定义类型的对象,如果没有给它们指定一个初始化程序,类就会自己指定一个 不明确的初始化一个字符串,字符串就会被隐含地初始化为空 对于内部类型的局部变量,则没有这样隐含初始化,意味着:变量未定义的话,创建变量的时,就会给这些变量分配适当的内存单元,而变量的值则是有这些单元中的随机信息组成的。【往往非常多的操环境会允许对未定义变量(经常会是一个对类型无效的值)的访问,冲突和错误结果的几率就会非常高】 4, 如果希望保持系统环境的独立性,就不能直接编写恰当的类型(因为不同的环境使用不同的类型表示长度),我们应该养成使用库定义的size

C++ Change Output From “cout”

好久不见. 提交于 2020-01-10 05:05:14
问题 Is it possible to change text printed with "cout"? I would like to make it show the current percentage of something without having to have a new line for each percentage. Is this possible? 回答1: This works for me: std::cout << "1111"; std::cout << "\r"; std::cout << "2222"; \r is a carriage return symbol. Puts the "cursor" back to the beginning of the line. Alternatively you can use \b character. This is backspace. When printed it goes one character back. 回答2: In general it is not possible.