这篇文章本来是前天发的,但是不知道为什么CSDN上没有显示,可能是我没发,记错了。又由于没有留底稿,还是重写一下吧,也为知己不留底稿的恶习做个标记。
之所以接触C++11是因为自己前天突发奇想想用C++来模拟一下C#里的委托,但是尝试过很多方法和各种搜索后,知道之前的C++是不支持模板重载的,所以不可能通过编写多种版本的模板来实现变参的效果,如果使用《C++设计新思维》里的TypeList方式的话...
分类:
编程语言 时间:
2015-04-11 11:49:07
阅读次数:
191
该题目的难点在于n可能很大,超过了整数表示的范围,所以一般有两种思路,一种是用字符串表示整数,并实现++操作符,另一种是把该题目当做排列组合来做,使用递归可以实现,下面给出使用递归实现的代码:void __print(char digit_array[], int index, int n)
{
if (index < 0) return;
if (index == n - 1)...
分类:
其他好文 时间:
2015-04-11 00:02:40
阅读次数:
149
用C++写了一个栈模板,其间用了一些《Effective C++》的准则,记录在这里喽。这个类还没有做到异常安全,以后改进!
Stack.h文件。#ifndef _STACK_H_
#define _STACK_H_namespace MyDataStructure
{
template
class Stack
{
private:...
分类:
其他好文 时间:
2015-04-09 08:50:42
阅读次数:
117
基于数组实现的循环队列,这个比基于链表实现的稍微麻烦一点,需要浪费一个存储空间。如果全部利用,则编程将会变得更加繁琐,并且更容易出错。// LoopQueue.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include using namespace std;struct loop_queue
{
int capacity;...
分类:
其他好文 时间:
2015-04-08 23:24:40
阅读次数:
202
八皇后问题是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。解题的思路如下:从棋盘的第一行起,先选择第一个格子作为第一个皇后的位置,然后在第二行中从第一个格子...
分类:
其他好文 时间:
2015-04-07 09:49:32
阅读次数:
130
双端队列是一种插入和删除可以既可以在表头也可以表尾进行的一种数据结构,四种基本操作分别为:
push:在表头插入
pop:在表头删除
insert:在表尾插入
eject:在表尾删除
每一种操作的复杂度都为O(1)。通过组合不同插入和删除,双端队列可以作为栈使用,也可以作为队列使用:#include "stdafx.h"
#include using namespace...
分类:
其他好文 时间:
2015-04-05 10:36:04
阅读次数:
201
在一个数组中实现两个栈,当数组未填满是任一个栈不能溢出。解法是将一个栈从头开始往后插入,而另一个从后往前插入,如果插入一个元素后,两个栈的top指针未相遇,则表示数组未满,栈没有溢出。#include "stdafx.h"
#include using namespace std;
struct special_stack
{
int capcity;
int l...
分类:
编程语言 时间:
2015-04-05 10:33:35
阅读次数:
402
愚人节与自己开了个很大的玩笑,几天没写程序,今天继续!Josephus问题是说N个人围成一个圈传热土豆,先约定一个数M,当传递了M次的时候拿着土豆的人出局,然后将土豆给出局人的下一个人,游戏继续,直到最后只剩下一个人,求出局人的序列(按出局顺序排列)。
这个问题可以用数组实现,但是需要标记代表出局人的元素,并且没遍历一个元素就要检查该元素是否已被标记为出局,这样程序运行时间必然会变慢。另一种方式是...
分类:
编程语言 时间:
2015-04-04 10:46:16
阅读次数:
265
多项式的每一项可以需要两个参数,即系数与指数。描述多项式的一种方式是用数组的下标表示项的指数,而用数组存储的元素表示相应项的系数。这样表示的多项式看起来很简单,但是在很多计算中却显得很不方便,这种不方便主要出现”在稀疏的“多项式中(比如x的10000次方加1),如果要输出多项式却要从头到尾扫描数组。另一个缺点是浪费了很多的空间,上面的例子中有效的数组元素仅仅只有两个。所以最好还是用链表表示,每个节...
分类:
其他好文 时间:
2015-03-31 09:15:19
阅读次数:
183
许多教学书上都用斐波那契数列(数列中第一二个值都是1,其它任意一个数都是其前两项之和)作为讲解递归的例子,作为教学例子,它确实十分合适,但是如果用在实际计算中,那么递归实现的斐波那契数列求值实在是太满了,其中主要的原因是重复计算实在太多,这样的递归算法不仅速度效率低下,还容易造成栈溢出。如果能够保留下已经计算过的值,但需要时直接取用而不是重复计算,那么必然会提高程序性能。
对于斐波那契数列求解使...
分类:
编程语言 时间:
2015-03-29 08:21:04
阅读次数:
180