- 博客(7)
- 资源 (4)
- 收藏
- 关注
原创 排列和组合相关问题总结
目录一、全排列问题二、组合问题三、排列、组合问题的变种 一、全排列问题 1.c++标准库函数next_permunation 算法原理:利用字典序进行排序 第一步:从右往左,找到第一个升序位置i,为x; 第二步:从位置i+1开始,找到第一个大于i元素的位置,记为j,为y; 第三步:交换i和j的元素,记交换x和y; 第四...
2019-01-02 20:28:47
542
原创 c++ 类对象内存分布模型(基于vs2017 32位)
class A0{};1.没有继承,不含有虚函数的类class A1{private: int a; int b;};2.没有继承,含有虚函数的类class A2{private: int a; int b;public: virtual void f1() { }};3.单一继承,父类不...
2018-12-05 13:34:10
398
原创 三种二次开发的方式
一,源代码 此时得到的是他人的源代码。二次开发时,只需将源代码的.H和的的的的.cpp文件分别导入到当前项目即可。二,静态库 此时得到的是XX.lib和XX.h文件使用的方式有两种: 第一种:将XX.lib和XX.h放到当前目录下,在新的项目动态调用#include “XX.h”#pragma comment(lib,“XX.l...
2018-06-27 21:22:33
6031
原创 c++和java中的类型提升和类型截断以及移位操作
一、符号扩展的概念 c++中分为有符号数和无符号数,java中只存在有符号数。大多数计算机以补码的形式存储数据。 符号扩展:进行数据类型提升时,以首位数据进行扩展。 例子:char(c++)int(c++)-1: [1111 1111]-1: [1111 1111 1111 1111 1111 1111 1111 1111] 1 ...
2018-06-26 17:24:09
376
原创 两种交换两个数据的方式
两种交换数据的方式第一种:原位交换(不需要额外的内存)第二种:普通交换(需要额外的内存)实现代码如下://原为交换void swap(int *m1, int *m2){ *m2 = *m1^*m2; *m1 = *m1^*m2; *m2 = *m1^*m2;}//普通交换void swap1(int &a, int &b){ int t...
2018-06-24 13:28:44
1003
原创 约瑟夫(josephus)环问题
一、问题描述 N个身陷绝境的人一致统一按照以下的方式减少总的人数:他们做成一圈,从开始位置开始报数,报数为M的人就会被杀死,直到剩下最后一个人。现在给定数值N和M(N>M),小明在这N个人中的,小明站在哪一个位置,才能活下来。二、问题分析 解法:1.使用队列,复杂度为O(M*N); 2.使用链表,复杂度为O(M*N); 3.使用...
2018-06-12 16:48:23
411
原创 中序表达式向后序表达式的转换(c++实现)
中序表达式向后序表达式的转换(c++实现)一.中序表达式和后序表达式 中序表达式:就是我们学习中经常看到的表达式:6*(5+(2+3)*8+3)=288; 后序表达式:也叫逆波兰表达式,这是计算机处理表达式的方式。二.实现原理 1.当读取的是操作数时,直接放置到输出; 2.当读取的是操作符时,不直接放置到输出,必须先存放在某个地方(实际上为栈),然后进行优先级的比较: ...
2018-05-22 16:58:45
5301
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人