![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 70
ken_scott
这个作者很懒,什么都没留下…
展开
-
【试题】排列组合
在写一个远程的代码,如果本地有M个显示器,远程有N个显示器(M<=N),依据分辨率、显示器刷新频率等要求,需要对远程的N个显示器进行最佳分辨率修改,之后,需要从N个远程显示器中选择M个,跟本地显示器进行一对一的匹配。即从 A(N, M) = N! / (N-M)! 种组合选择1种最优匹配,这里用到了排列组合,而 std::next_permutation()用于全排列A(N, N) = ...原创 2020-04-26 18:10:57 · 306 阅读 · 0 评论 -
笔记:防止调用拷贝构造函数时的自我拷贝
#include using namespace std;class A{public: A() { cout << "A::A()" << endl; } A(const A & ra) { cout << "A::A(const A & ra)" << endl; i原创 2011-12-29 15:35:01 · 973 阅读 · 1 评论 -
笔记:虚函数
#include using namespace std;class A{public: A() { cout << "A::A()" << endl; sayhello(); } virtual ~A() { sayhello(); cout << "原创 2011-12-29 16:42:27 · 592 阅读 · 0 评论 -
试题:找出数组中元素和为指定值的所有组合
本问题来自论坛, 题意大概如下:指定一个数组, 和一个数值, 找出数组中元素和为这个指定数值的所有组合如指定数组元素为[1, 2, 3], 而指定数值为6, 则满足要求的组合为:{1, 2}, {3}#include using namespace std;void solve(int n, int data[], int start, int end,原创 2011-12-30 18:28:31 · 6047 阅读 · 2 评论 -
试题:实现一个不能被继承的类(续之上)
我在: 试题:实现一个不能被继承的类(上)中有如下代码: template class FinalMaker { private: ~FinalMaker() { } friend class T; }; class A : virtual public FinalMaker { }; ...原创 2012-01-04 19:42:45 · 575 阅读 · 0 评论 -
试题:编译期确定template <typename U, typename V>中U, V是否为同类型
我们知道int array[sizeof(int)];之所以能正常编译是因为sizeof(int)的结果在编译期就会被确定下来另外, int array[sizeof(0)];也可以正常编译, 因为sizeof的真正操作"参数"是类型, 不是值, 所以这句对编译器来说就是前面那句我们先定义一个函数:int getzero() { return 0; }, 我们再定义array如右: i原创 2012-01-04 19:58:00 · 1161 阅读 · 2 评论 -
用placement new修改对象
#include #include using namespace std;struct Name{ Name(const char * name = "") { int size = strlen(name); if (size > 19) { size = 19; }原创 2012-01-16 17:51:11 · 599 阅读 · 0 评论 -
试题:求1000000以内的素数
之前无聊时, 写的找素数的代码, 记得当年考二级C时, 有这么一道上机题, 那时候求稳, 效率肯定不高, 所以今天用了排除法来做先给出总的测试代码:#include #include #include using namespace std;#define MAX_DATA 1000000int size;int data[MAX_DATA / 2 + 1]原创 2012-02-01 18:18:54 · 3098 阅读 · 2 评论 -
试题:组合的模板非递归实现
#include #include #include using namespace std;template void show(const vector & element, const vector & index){ assert(index.size() > 0); assert(element.size() >= index.size()原创 2012-02-08 12:33:40 · 558 阅读 · 0 评论 -
试题:输入n, 得到以n为边长的正方形网格, 奇数圈为A, 偶数圈为B
刚在论坛碰到这个题, 记下当时的解法#include using namespace std;void show(unsigned int n){ const char first = (((n + 1) % 4) > 1 ? 'A' : 'B'); const char second = ('A' == first ? 'B' : 'A');原创 2011-12-30 13:04:17 · 753 阅读 · 0 评论 -
试题:八皇后问题
问题背景:八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。#include #inclu原创 2011-12-30 18:20:53 · 803 阅读 · 0 评论 -
试题:两个基类有同名的虚函数要实现, 怎么办?
先把问题陈述一下:有两个类A, B, 它们可能是别人实现的(或是别人提供的库中的类), 很复杂且已经在用, 你不能修改他们, 你想写一个类C同时具有这两个类的特性, 因为自己实现它代价实在是太大, 所以你想到用C继承A, B以达到效果, 但是有一个问题, A, B具有一个同名的虚函数, 你在C中怎么重新实现这个虚函数呢? 先看下面的代码:#include #include usin原创 2012-01-06 11:35:38 · 3381 阅读 · 3 评论 -
试题:将罗马数字转为阿拉伯数字
#include #include #include #include #include #include #include using namespace std;void Arabic2Roman(int arabic, list & roman){ ......}struct Exception{};int A原创 2012-02-01 18:01:30 · 884 阅读 · 0 评论 -
试题:集合的划分问题
输入集合{ 1, 2, 3 }输出结果:{ {1}, {2}, {3} }{ {1}, {2, 3} }{ {1, 3}, {2} }{ {1, 2, 3} }试编写相应算法:#include #include #include #include using namespace std;template void set(const vect原创 2012-02-08 18:48:44 · 833 阅读 · 0 评论 -
试题:用123456789和+-*/组合出100
#include using namespace std;struct MyException{};double Plus(double first, double second){ return (first + second);}double Minus(double first, double second){ retu原创 2012-02-10 18:47:34 · 2193 阅读 · 0 评论 -
试题:复数类
#include using namespace std;class Complex{public : Complex(double real = 0.0, double img = 0.0); Complex(const Complex & other); friend ostream & operator << (ostream & os, const Co原创 2012-02-14 12:35:41 · 569 阅读 · 0 评论 -
简单内存池
#ifndef __BUFFER_MANAGER_H__#define __BUFFER_MANAGER_H__#include #include using std::list;using std::iterator;typedef unsigned char u_char;typedef unsigned long u_long;typedef un原创 2011-11-28 18:25:47 · 679 阅读 · 0 评论 -
初级数独破解
#ifndef __SUDOKU_H__#define __SUDOKU_H__#include struct Region{ int index; // 原始下标 int count; // 已填个数 Region() : index(0), count(0) { } bool operator < (const Region & rh原创 2011-12-06 18:02:49 · 803 阅读 · 0 评论 -
笔记:RTTI与多态
#include #include using namespace std;class A{public: void show() { cout << "A::show()" << endl; }private: virtual void donothing() { }};cl原创 2011-12-22 19:01:36 · 1128 阅读 · 0 评论 -
笔记:成员函数指针
#include using namespace std;class A{public: int memfunc(int i = 0) { cout << "A::memfunc" << endl; } static int clsfunc(int i = 0) { cout << "A:原创 2011-12-24 08:56:19 · 633 阅读 · 2 评论 -
试题:组合
#include using namespace std;#define NUM_COUNT 6int size; // data数组中记录元素个数int count; // 组合个数int num[NUM_COUNT]; // 给定组合数据int data[NUM_COUNT]; // 参与组合元素voi原创 2011-12-30 18:13:55 · 630 阅读 · 0 评论 -
试题:全排列
#include using namespace std;#define NUM_COUNT 6int count; // 全排列个数int num[NUM_COUNT]; // 给定全排列数据void swap(int & a, int & b){ if (a != b) { a ^= b;原创 2011-12-30 18:16:54 · 743 阅读 · 0 评论 -
试题:实现一个不能被继承的类(上)
其实我们根本没法写出满足字面要求的代码, 其实我们要实现的是:写一个类, 使继承这个类的子类不能实例化对象(不论栈上还是堆上) 看了点书的人都会想到这个办法: 将自己的类的析构函数(或所有构造函数+拷贝构造函数)声明为private, 这样继承它的子类就不能实例化对象了这个方法有一个缺点: 我们只能通过下面的方式创建对象了1.在static成员函数(也可以是友元函数)中返回一个局部原创 2011-12-31 19:16:47 · 915 阅读 · 2 评论 -
试题:实现一个不能被继承的类(下)
我们也不必气馁, 我们可以用类模板的特化来做, 实现如下:template class FinalMaker;class A;template <>class FinalMaker{private: ~FinalMaker() { } friend class A;};class A : virtual public FinalMak原创 2011-12-31 19:19:39 · 549 阅读 · 0 评论 -
试题:实现一个不能被继承的类(续之下)
分析: 代码之所以不能通过编译是因为A中的typedef晚于FinalMaker中对A::RawType的引用, 所以我们要有方法更早的引用到A::RawType, 所以我让A又继承了Template, 并把typedef写在Template中, 这样A就会继承下这个typedef, 又考虑到构造函数的继承顺序, 所以Template应被先继承, 且应该被virtual的方式继承:template原创 2012-01-04 19:49:20 · 619 阅读 · 1 评论 -
自定义类的大小比较重载的两种方式
方式一:#include using namespace std;struct Number{public: Number(int a, int b, int c) : first(a), second(b), third(c) { } Number(const Number & rhs) : firs原创 2012-01-06 18:17:36 · 1026 阅读 · 0 评论 -
试题:将阿拉伯数字转为罗马数字
在罗马数字中, 利用7个不同字母进行重复或者组合来表达各式各样的数字.I = 1 V = 5 X = 10 L = 50 C = 100 D = 500 M = 1000下面是关于构造罗马数字的一些通用的规则的介绍:1> 字符是叠加的. I表示1, II表示2, 而III表示3. VI表示6(字面上为逐字符相加, "5加1"), VII表示7, VIII表示8原创 2012-01-31 18:38:17 · 1720 阅读 · 0 评论 -
试题:跳马问题
#include #include using namespace std;const int row = 5;const int col = 5;bool move(int r, int c, int & index, int step[row][col]){ if (r >= 0 && c >= 0 && r < row && c < col && 0原创 2012-02-02 13:40:00 · 1350 阅读 · 0 评论 -
试题:实现strstr
#include #include using namespace std;char * strstr(char * str1, char * str2){ assert(NULL != str1 && NULL != str2); if ('\0' == *str2) { return str1; } whil原创 2012-02-07 13:25:33 · 637 阅读 · 0 评论 -
试题:如何利用一个6面概率均匀的骰子把一个苹果公平地交给七个孩子中的某一个(上)
写作该文的目的是出于对帖子: 一个骰子有6面, 概率均匀, 我如何选择7件事? 有些疑问和想法帖子中对8楼的方案呼声最高:8楼的方案如下:用一个骰子扔一次得到x, 再仍一次得到y, 如果x, y都为6就不算, 重来该方案原理是利用表达式(6x-6+y)可以得到[1, 36], 再去除x, y都为6的情形, 得到[1, 35], 这35个数字对7取余后再加1, 就会得到5个1,原创 2012-02-12 18:38:52 · 1453 阅读 · 0 评论 -
试题:如何利用一个6面概率均匀的骰子把一个苹果公平地交给七个孩子中的某一个(下)
在没看8楼前, 我也想了个方案:取七个骰子, 第一个骰子标号1-6, 第二个7-12, ..., 第六个标号31-36, 第七个标号37-42, 一起扔, 就会得到(1, 42)中的七个值, 这42个值对7取余后加1的结果有7种情况1-7, 且取[1, 7]都有5种情况, 也就是说, 这七个骰子一起扔后, 得到的点数对7取余加1后理论上应该均匀的得到[1, 7], 下面考虑这些经过计算处理的值原创 2012-02-12 18:59:59 · 1677 阅读 · 0 评论 -
试题:实现堆
堆的实现:#include #include using namespace std;template void __push__heap(RandomAccessIterator start, RandomAccessIterator end, T *, CompareFunc comp){ if (end - start =原创 2012-02-13 18:15:26 · 450 阅读 · 0 评论 -
写在情人节的小程序
"对你爱 爱 爱不完"!#include using namespace std;int main(){ for (unsigned char times = 0; times <= 255; ++times) { cout << "我爱你!" << endl; } return 0;}"说一万遍我爱你原创 2012-02-14 14:03:00 · 1560 阅读 · 0 评论 -
试题:网易笔试的一道题目
写一个程序,打印出以下的序列。(a),(b),(c),(d),(e)........(z)(a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).....(b,z),(c,d).....(y,z)(a,b,c),(a,b,d)....(a,b,z),(a,c,d)....(x,y,z)....(a,b,c,d,.....x,y,z)这道原创 2012-02-16 15:21:42 · 888 阅读 · 0 评论 -
试题:打印n位水仙花数
水仙花数指的是一个n位数(n≥3), 它的每个位上的数字的n次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) , 理论上, 最大的水仙花数不超过34位题目还是从 luciferisnotsatan 博客上看到的, 他的实现见:n位水仙花数由于C++中整数的取值范围受限, 所以下面的代码最大只能计算到n = 19的情形下面是我的实现代码:#include原创 2012-02-17 13:30:45 · 1313 阅读 · 0 评论 -
新简单内存池
#ifndef __MEMORY_POOL_H__#define __MEMORY_POOL_H__#include using namespace std;#ifndef nullptr#define nullptr (NULL)#endifclass Memory_Pool{private: struct Storage {原创 2012-03-24 21:28:08 · 580 阅读 · 0 评论 -
笔记:作用域与可见性
#include using namespace std;int main(){ const char x = 100; // char, short, int, long { // block 1 int x = x; cout << x << endl; // random data } { /原创 2011-12-29 16:00:20 · 549 阅读 · 0 评论 -
BitMap简易实现
#ifndef __BITMAP_HPP__#define __BITMAP_HPP__#include #include class BitMap{public: BitMap(int min, int max); ~BitMap(); bool set(int value); bool clear(int value); bool te原创 2012-04-16 23:22:22 · 638 阅读 · 0 评论 -
BloomFilter简易实现
#ifndef __BLOOM_FILTER_HPP__#define __BLOOM_FILTER_HPP__#include #include template unsigned int GetHash(const T & value){ return(value);}const int prime[] = { 3,原创 2012-04-18 01:11:14 · 933 阅读 · 0 评论 -
试题: 小白鼠问题
刚看到这个帖子:C++编程,小白鼠问题,开始没有什么思路,刚躺下,想到了。。。原题:有一家生化所,一月份引入一对新生的小白鼠。这对小白鼠生长两个月后,在第三、第四、第五个月各繁殖一对新小白鼠,在第六个月停止繁殖,在第七个月则死亡。新生的小白鼠也如此繁殖。问在第N个月时,活的小白鼠有多少对?思路:第N个月的对数 就是 第N-1月时 1-5个月(当时的1-5)的对数 加上 下一个月原创 2012-04-19 03:08:24 · 2381 阅读 · 0 评论