摘要: 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。 b | a------1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9------c | d 通过观察发现矩阵的下标有这样一个规律:a行递增后b列递增然后c行递减再d列递... 阅读全文
posted @ 2013-03-17 18:53 小楼一夜听风雨 阅读(1516) 评论(0) 推荐(0) 编辑
摘要: 问题:设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。#include <iostream>#include <list>using namespace std;// n为总人数,start为开始位置,step为步长void RemoveCircle(int n, int start, int step){ if (n < 1 || start < 1 || start > n || step < 1) { return 阅读全文
posted @ 2013-03-15 18:21 小楼一夜听风雨 阅读(2909) 评论(0) 推荐(0) 编辑
摘要: 无聊---交换一个大于10的数最高位和最低位没有技术性可言,就当是消遣一下吧。注意溢出。#include <iostream>#include <vector>using namespace std;// 交换一个大于10的数最高位和最低位int ChangeBit(int &number){ const int ten = 10; if (number < ten) { return number; } vector<int> ivec; while (number) { ivec.push_back(number % t... 阅读全文
posted @ 2013-03-15 16:04 小楼一夜听风雨 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 声明:主要参考《MFC实例》功能:测试点击鼠标的速度,在界面上显示速度和级别。过程:1、单击开始后获取开始时间,初始化计数为0并设置开始状态为true;2、响应单击鼠标左键消息。如果开始状态为假则直接返回,这主要是为避免在单击开始之前就进行计数。此时由于开始时间未知,会在计算速度时产生未知的结果:1 endTime = CTime::GetCurrentTime(); // 获取当前结束时间2 timeSpan = endTime - beginTime; // 计算时间差3 float seconds = (float)(timeSpan.GetSeconds());4 if (second 阅读全文
posted @ 2013-02-28 17:50 小楼一夜听风雨 阅读(1342) 评论(3) 推荐(0) 编辑
摘要: 声明:主要参考网址http://wenku.baidu.com/view/52582de8172ded630b1cb6a6.html如果文中有错误的地方,还请各路大神指正、教育,谢谢。功能:在进入单文档之前弹出登录界面,在正确输入用户名、密码的情况下才可跳转。总结记录:1、建立一个MFC单文档应用程序;2、在Resource视图中添加一个Dialog并建立对应的类(public继承CDialog);3、添加必要的控件,如静态文本框(用于描述控件和显示当前时间)、文本编辑框(用于输入用户名和密码);4、给用户名和密码(均为文本编辑框)关联类成员变量m_password、m_user。此时运行程序 阅读全文
posted @ 2013-02-25 18:56 小楼一夜听风雨 阅读(11984) 评论(0) 推荐(0) 编辑
摘要: 题目描述:一个正整数有可能可以被表示为 n(>=2) 个连续正整数之和,如:15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。输入数据:一个正整数,以命令行参数的形式提供给程序。输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合要求的序列,输出 “NONE” 。例如,对于 15 ,其输出结果是: 1 阅读全文
posted @ 2013-02-20 11:57 小楼一夜听风雨 阅读(1073) 评论(0) 推荐(0) 编辑
摘要: 数字黑洞问题:任意一个五位数,调整其各位数字,分别组成一个最大数字和一个最小数字;将其差值再作为新的数(如果不足5位,则前边补0),再次进行上一操作,直到出现循环。例如41679,首次得差值82962,继续进行,则产生75933,63954,61974。由此构成一个循环数。输入:41679输出:[82962,75933,63954,61974]某软件大赛题目(题目要求列出所有五位数,为便于调试和观察代码仅列出10个数,可自行修改循环条件遍历),解决思路如下:1、拆分各位数并保存,对拆分后的数排序、构造最大和最小值,求出差值;2、判断是否出现循环,出现即终止进入下一轮。欢迎拍砖,^_^#incl 阅读全文
posted @ 2013-01-25 11:18 小楼一夜听风雨 阅读(1731) 评论(0) 推荐(0) 编辑
摘要: 学C++有段时间了,写点东西记录一下。前段时间去面了一个嵌入式(VC)的职位。笔试中有一道题是这样的:循环右移一个字符串,比如原来是“abcde”,要求移动2位,结果是“cdeab”。函数原型为:void RightMove(char *pChar, int steps),给出实现代码。我的思路是这样的,首先要考虑pChar是否为NULL以及steps否合法(小于0或者大于字符串长度本身)。于是在pChar为空或者steps < 0时直接返回,另外如果steps > strlen(pChar)时修改steps值为其与字符串长并的模(即在调用者的角度看效果是正常的);其次,右移的实质 阅读全文
posted @ 2013-01-17 11:34 小楼一夜听风雨 阅读(2027) 评论(0) 推荐(0) 编辑