- 博客(156)
- 资源 (4)
- 收藏
- 关注
转载 Write a routine that prints out a 2-D array in spiral order
我的理解,给定2维数组1 2 3三角形判断8 9 47 6 5“螺旋式”顺序输出:1 2 3 4 5 6 7 8 9 private static void PrintNumberasSpiralOrder() { // 1 2 3 4 // 12 13 14 5
2012-04-05 21:58:26 313
转载 位计算的诸多算法(计算二进制1的个数)
讲解一:这个问题很常见,在通信编码中叫hamming weight。求解算法也是多种多样。1.最原始的方法依次探测每一位,很简单。实现可以依次移位,也可以递归。这里就不多说了。2.打表将可能的输入进行求值打表,hash思想,快但是浪费空间,也可以划分为字节(或更小 4-bit)后按字节打表,最后把各字节结果相加。3. 快速方法在位运算
2012-04-05 17:18:14 999
转载 不利用浮点运算,在屏幕上画一个圆 (x**2 + y**2 = r**2,其中 r 为正整数)
考虑到圆的对称性,我们只需考虑第一象限即可。等价于找到一条连接点(0,r)到点(r,0)的一条曲线,曲线上的点距圆心(0,0)的距离最接近 r。我们可以从点(0,r)开始,搜索右(1,r),下(0,r-1),右下(1,r-1)三个点到圆心的距离,选择距圆心距离最接近 r 的点作为下一个点。反复进行这种运算,直至到达点(r,0)。由于不能利用浮点运算,所以距离的比较只能在距离平方的基础上
2012-04-05 17:08:36 823
原创 if(x == 0) y=a else y=b 其它几种实现方法
(1)y=a*(1-x)+ b*x(2)y=x?b:a(3)int y[]={a,b}; x=y[x];
2012-04-05 17:07:22 700
转载 单词反转
/* 单词反转 "I am a student." --> "student. a am I"*/#include #include #include using namespace std;int main(int argc, char** argv){ //* char str[] = "I am a student of BeiHang"; int sz =
2012-04-05 11:17:23 281
转载 给出一个函数来合并两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠
/*给出一个函数来合并两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。//*/#include #include #include using namespace std;void copystr(char pachar[], char pbchar[], int sza, int szb, char* &result);int main(){ cha
2012-04-05 10:58:53 1024
转载 怎样编写一个程序,把一个有序整数数组放到二叉树中(按行输出)
方法1:#include #include #include "queue.h"struct student { int value; struct student *lchild; struct student *rchild;};void arraytotree(int *a, int len, struct student **p) { if(le
2012-04-03 21:47:04 1500
转载 写一个函数,输出字符串中字符的所有排序。(比如:abc acb bac bca cab cba )
方法1:#include #include void Permutation(char a[], int start, int end){int i,j;char temp;if(start == end){for(i = 0; i printf(" %c ",a[i]);printf("\n");}else{for(i = s
2012-04-03 21:01:41 1467
转载 写一个函数,检查字符是否是整数,如果是,返回其整数值(或:怎样只用4行代码编写出一个从字符串到长整型的函数)
方法1:#include #include #include #include using namespace std;long strtoint(char *str,int length);int main(int argc, char* argv[]){ int i=0; char str[100]; while ((str[i]=getchar())!='0') {
2012-04-03 20:16:21 860
原创 rand(msdn)
/* RAND.C: This program seeds the random-number generator * with the time, then displays 10 random integers. */#include #include #include void main( void ){ int i; /* Seed the random-n
2012-04-03 19:08:30 781
转载 编写反转字符串的程序,要求优化速度、优化空间
#include void reverse(char *_str,int _l) //反转函数,_l指要反转字串的长度 { char*p=_str,*q=_str+_l-1; _l/=2; while(_l>0) { //为了使代码得到优化 采用异或操作符进行交换 *p=*p^*q; *q=*p^*q;
2012-04-03 17:22:15 509
原创 strstr 输入src 寻找里面是否有子串needle
char * _strstr(const char *src, const char *needle){ const char *p1 = src, *p2 = needle; while (*src != '\0' && *needle != '\0') { if (*src++ != *needle++) { needle =
2012-04-03 17:00:51 352
转载 Write a function to find the depth of a binary tree
struct Node {T data; Node * left, * right; }; int depth (Node * pNode){ return (pNode == NULL) ? 0 : 1 + max (depth (pNode->left), depth (pNode->right)); }
2012-04-02 12:39:35 335
原创 判断数组中是否有重复的数字
方法1: const int N = 10; //int a[N] = {10,8,9,4,3,6,5,1,2,7}; int a[N] = {10,9,8,8,6,5,4,3,2,1}; int i, j= 0; for(i = 0; i != N; ++i) { ++j; int k = a[a[i]-1]; if(i != a[i]-
2012-04-01 10:03:38 1020
转载 解释型 编译型 语言
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时
2012-03-31 15:03:33 2437
原创 单向链表的反转
struct node{ int a; node *next;};void reverse1(node *head){ node *p = head, *r = head, *q; while (p) { q = p->next; p->next = head; head = p; p = q; } r->next = NULL;
2012-03-21 15:46:24 378
转载 静态联编和动态联编
联编是指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系;按照联编所进行的阶段不同,可分为静态联编和动态联编;静态联编:是指联编工作是在程序编译连接阶段进行的,这种联编又称为早期联编;因为这种联编是在程序开始运行之前完成的;在程序编译阶段进行的这种联编又称静态束定;在编译时就解决了程序中的操作调用与执行该
2012-03-21 13:16:33 750
转载 关于C中的malloc()和free()
一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用malloc分
2012-03-20 20:10:08 360
转载 C++大数精度计算(带小数点)
头文件:// WTNumber.h: interface for the CWTNumber class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_WTNUMBER_H__92E62B40_491A_4A75_AB89_FFB160DB2343
2012-03-20 11:27:45 8619 2
转载 C++ 大数
前言:由于计算机运算是有模运算,数据范围的表示有一定限制,如整型int(C++中int 与long相同)表达范围是(-2^31~2^31-1),unsigned long(无符号整数)是(0~2^32-1),都约为几十亿.如果采用实数型,则能保存最大的double只能提供15~16位的有效数字,即只能精确表达数百万亿的数.因此,在计算位数超过十几位的数时,不能采用现有类型,只能自己编程计算.高
2012-03-20 11:22:04 1084 1
转载 sizeof && strlen
#include#includeusing namespace std;struct saa{ unsigned int f1:1; };char foo0();void main(){ int ss[5] = {1,2,3,4,5}; char A[5] = ""; char*B="abcde"; void*C; C=new char[100]; char a1[
2012-03-19 21:50:51 346
原创 结构体&&指针
#include#include using namespace std; //#pragma pack(1)typedef struct{ int a; char c; double d;}BB;typedef struct _AA{ int a; int b; char c; BB bb;}AA;int main(
2012-03-19 20:56:18 789
原创 如何输出源文件的标题和目前执行行的行数
/**************************** *功能:输出源文件的标题和当前执行 * 行的行数 *目的:知识学习****************************/#includeusing namespace std;void main(){ int line=__LINE__;//注意:LINE前后分别是两个下划线“-”(半角
2012-03-19 19:42:19 1292
转载 预编译
预编译又称为预处理,是做些代码文本的替换工作 处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等 就是为编译做的预备工作的阶段 主要处理#开始的预编译指令 预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。常见的预编译指令有: (1)#include 指令 该
2012-03-19 17:17:36 246
转载 C++宏定义
C++ 宏定义将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替。前面已经说过,预处理命令不同于一般C++语句。因此预处理命令后通常不加分号。这并不是说所有的预处理命令后都不能有分号出现。由于宏定义只是用宏名对一个字符串进行简单的替换,因此如果在宏定义命令后加了分号,将会连同分号一起进行置换。一.宏定义 1.不带参数的宏定义: 宏定义又称为
2012-03-19 17:16:16 488
转载 C++ ADO
准备:(1)、引入ADO类#import "c:\program files\common files\system\ado\msado15.dll" \no_namespace \rename ("EOF", "adoEOF")(2)、初始化COM在MFC中可以用AfxOleInit();非MFC环境中用: CoInitialize(NULL);CoUnIniti
2012-03-17 20:31:47 515
转载 用console做调试输出窗口(方法一)
在使用VC++开发界面程序的时候,经常会遇到代码调试的问题,而有时我们有觉得单步调试又很麻烦懒得一步步走下去,于是我们开始怀念基于控制台方式的printf和cout输出信息的方式了。^_^ 下面给大家介绍一个类,可以让你实现这个功能。在需要调试的工程中添加头文件console.h,然后在使用printf和cout前添加代码: ConsoleWindow window; wind
2012-03-17 20:29:57 3642
转载 用Visual_C++操作INI文件.doc
在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINAPI函数原型为: BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lp
2012-03-17 20:28:16 295
转载 c++ MD5实现
main.cpp点击隐藏C CODE#include #include "md5.h" using namespace std; int main(int argc, char *argv[]){ cout return 0;}md5.h点击隐藏C CODE/* MD5 converted to C++ class by F
2012-03-17 20:27:20 449
转载 C++ 中int,char,string,CString类型转换
1. c++中string到int的转换1) 在C标准库里面,使用atoi:#include #include std::string text = "152"; int number = std::atoi( text.c_str() ); if (errno == ERANGE) //可能是std::errno { //number可能由于过大或过小而不能完
2012-03-17 18:42:24 448
转载 MFC托盘
写个成员变量NOTIFYICONDATA m_nid;//for icon on the tray在对话框的OnInitDialog里: m_nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); m_nid.hWnd=this->m_hWnd; m_nid.uID=IDR_MAINFRAME; m_nid.uFlags=NIF_ICON|NI
2012-03-17 16:59:39 378
转载 MFC中自定义消息
消息映射、循环机制是Windows程序运行的基本方式。VC++ MFC 中有许多现成的消息句柄,可当我们需要完成其它的任务,需要自定义消息,就遇到了一些困难。在MFC ClassWizard中不允许添加用户自定义消息,所以我们必须手动在程序中添加相应代码,以便可以象处理其它消息一样处理自定义消息。自定义消息的步骤如下(举个例子):(1)建立Single Document的MFC Appli
2012-03-17 16:49:40 494
转载 _T和_L
_T("")是一个宏,定义于tchar.h下。[1] #define __T(x) L ## x #define _T(x) __T(x) 他的作用是让你的程序支持Unicode编码 因为Windows使用两种字符集ANSI(American National Standards Institute 美国国家标准学会)和UNICODE, 前者就是通常使用的
2012-03-17 16:45:21 303
转载 字符编码方式介绍
1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进
2012-03-17 15:38:54 696
转载 堆和栈的区别
非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据
2012-03-17 09:58:20 199
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人