考研可用
文章平均质量分 76
dazhi_100
这个作者很懒,什么都没留下…
展开
-
字符过滤(2013华为校园招聘上机考试)
一个字符串,如aAbas__a;要求,过滤为每个字符只出现一次:aAbs_;#include#include#include#include#includevoid chstr(const char *Input,char *Out){ int m=strlen(Input); const char *p=Input; char *q=Out;转载 2012-09-20 09:04:58 · 673 阅读 · 0 评论 -
统计一串字符串中出现次数最多和次多的单词
//统计一串字符串中出现次数最多和次多的单词#include#include#includeint compare(const char * st1,const char * st2){ if (strcmp(st1,st2)==0) return 1; else return 0;}void PickWord(const char* p转载 2012-09-20 08:11:50 · 3011 阅读 · 0 评论 -
c/c++中数的强制类型转化!!!!!!
在vc6中运行如下代码:#include int main(){ unsigned int a=0xFFFFFFF7,c=0xFFFFFF67; char *b=(char*)&a, *d=(char*)&c; printf("b=%x, d=%x\n",*b,*d); return 0;}为什么输出的结果会是:b=fffffff7, d=67如果将c改为:c=0x转载 2012-08-11 16:59:39 · 1076 阅读 · 0 评论 -
c++面试1
题目(一):C++中我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。请问:能不能同时用static和const修饰类的成员函数?分析:答案是不可以。C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个转载 2012-08-20 21:19:23 · 384 阅读 · 0 评论 -
C/C++/C#面试题精选(3)
题目(11):运行下图中的C#代码,输出是什么?namespace StringValueOrReference{ class Program { internal staticvoid ValueOrReference(Type type) { String result = "The type " + type转载 2012-08-20 21:22:16 · 586 阅读 · 0 评论 -
两个单向链表的第一个公共节点
问题:两个单向链表,可能存在公共节点。如何判断是否存在公共节点,并找出它们的第一个公共结点。思想:1. 如果两个链表相交,则从相交点开始,后面的节点都相同,即最后一个节点肯定相同;2. 从头到尾遍历两个链表,并记录链表长度,当二者的尾节点不同,则二者肯定不相交;3. 尾节点相同,如果A长为LA,B为LB,如果LA>LB,则A前LA-LB个先跳过, 然后二者一起向后遍转载 2012-09-09 23:12:58 · 580 阅读 · 0 评论 -
左旋转字符串
题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。 要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。分析:如果不考虑时间和空间复杂度的限制,最简单的方法莫过于把这道题看成是把字符串分成前后两部分,通过旋转操作把这两个部分交换位置。转载 2012-09-05 23:08:26 · 704 阅读 · 0 评论 -
ip地址转化为整数 整数转化为IP地址
1.IP地址转换为一个整数intipstrtoint(const char *ip){int result = 0;int tmp = 0;int shift = 24;const char *pEnd = ip;const char *pStart = ip;while(*pEnd != '\0'){while(*pEnd != '.' &转载 2012-09-20 08:31:49 · 1045 阅读 · 0 评论 -
最大连续子数列和问题
问题描述:给定一串整数,找出其中和最大的连续子数列,包括子数列的位置和最大和。给定整数序列:{0, -3, 6, 8, -20, 21, 8, -9, 10, -1, 3, 6, 5}其中和最大的连续子数列为:{21, 8, -9, 10, -1, 3, 6, 5}【PS】如果序列里都是负数的话,本文的算法返回最大的负数。有一种思想是,如果所有输入数据都是负数,则最大连续子转载 2012-09-17 22:19:08 · 839 阅读 · 0 评论 -
有序数组中找出给定数字的出现次数
问题:在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。解答:使用二分查找的方法分别找出给定数字的开始位置minIndex和结束位置maxIndex,最坏情况下时间复杂度为O(logn)。简单代码如下:/*二分搜索2.找 |最大| 下标i使得X[i] = V 返回 i 或者-1*/int BinarySe转载 2012-09-09 23:03:28 · 1478 阅读 · 0 评论 -
数据结构及算法学习总结(一)
1.vector 封装数组、list封装链表、map和set封装二叉树C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般的平衡二叉树(有些书籍根据作者姓名,Adelson-Velskii和Landis,将其称为AVL-树),所以被STL选转载 2012-09-09 22:34:36 · 2362 阅读 · 0 评论 -
动态规划问题
Dynamic Programming From novice to advanced 【原文见: http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=dynProg】 作者: By Dumitru转载 2012-09-03 19:49:54 · 730 阅读 · 0 评论 -
判断完全二叉树以及求二叉树深度的递归与非递归算法实现
/* 判断完全二叉树,依据定义:任何一个节点(除去叶子节点)有且仅有两个“孩子” */#include<stdlib.h>#define MAX_TREE_DEGREE 10typedef struct BTnode{//以二叉链表作为存储结构 char data; struct BTnode* lchild; str转载 2012-09-20 07:51:12 · 3163 阅读 · 2 评论 -
找出数组中出现次数超过一半的数
问题:现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。解析:这个题目类似于:微软的寻找发帖水王,思想:类似于擂台赛,设最多的数为X,每次删除两个不同的数(不管是否为最多的数X),则我们能保证剩下的数中X还是超过剩余总数的一半,一直循环这个过程,则最后一个肯定是X简单代码:int FindMost(const int* A,转载 2012-09-22 21:48:15 · 893 阅读 · 0 评论 -
贪婪算法与计数排序
1.贪婪法:初学算法时便知道这是解决问题一种很好很简单的方法,听课后才发现它能解决的问题还真是多。解决这类问题的方法可概括为“步步为营”,即每一步的选择一定是最优的过后不能更改,这一点是与动态规划最大的区别,动态规划也是类似的自底向上的解决方法,但是其做每一次选择的时候可能会对前面的选择作出动态的调整,由于这种特性使用动态规划时采用递归是很常见甚至是必须的方法。贪婪法典型例题有邮局建设问题转载 2012-09-14 21:14:21 · 1192 阅读 · 0 评论 -
printf的三种数制输出
#include "stdio.h"void main(){ int x = 77; // 十进制数 int y = 0x77; // 0x 表示十六进制数 int z = 077; // 0 表示八进制数 printf(" 八进制输出: x = %o\n",x); // %o 表示以八进制输出 printf(" 十进制输出: x = %d\n",x); // %d 表转载 2012-08-11 17:11:41 · 597 阅读 · 0 评论 -
c++各种类型变量的内存分配
程序在的内存中的分配(常量,局部变量,全局变量,程序代码)一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有转载 2012-08-30 21:34:38 · 862 阅读 · 0 评论 -
常用算法
一、快速排序void qsort(int x,int y) //待排序的数据存放在a[1]..a[n]数组中 {int h=x,r=y; int m=a[(x+y)>>1]; //取中间的那个位置的值 while(h{while (a[h] while (a[r]>m) r--; //比中间那个位置的值大,循环直到找一个比中间那个值小的 i转载 2012-09-23 20:01:27 · 928 阅读 · 0 评论 -
找出字典中的兄弟单词
问题:给定一个单词A,如果通过交换单词中字母的顺序可以得到另外的单词B,那么定义B是A的兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有多少个兄弟单词?解析:思路1:1. 关键时怎么定义一个key,使得兄弟单词有相同的key,不是兄弟的单词有不同的key。例如,将单词按字母从小到大重新排序后作为其key,比如bad的key为abd。2. 先做一个预处转载 2012-09-22 20:52:19 · 854 阅读 · 0 评论 -
一些程序题(上机考)
1.找出一个数组中满足2^N的元素#include using namespace std;int find(int a[],int len);void main(){int a[]={1,2,3,5,7,8,16};int len=sizeof(a)/sizeof(int);cout}int find(int a[],int len) {转载 2012-09-20 09:00:02 · 796 阅读 · 0 评论 -
链表的循环链接
问题1:判断链表是否循环?解析:设置1个快指针(每次向前走2个节点),一个慢指针(每次向前走1个节点),如果存在环,则快指针肯定能赶上慢指针;简单代码:bool isLoopList(const ListNode* root){ if(root == NULL) return false; const ListNode *pFast = root,*pS转载 2012-09-04 22:10:06 · 575 阅读 · 0 评论 -
C/C++/C#面试题精选(2)
题目(六):运行下列C++代码,输出什么?struct Point3D{ int x; int y; int z;};int _tmain(int argc, _TCHAR* argv[]){ Point3D* pPoint = NULL; int offset = (int)(&(pPoint)->z)转载 2012-08-20 21:23:25 · 509 阅读 · 0 评论 -
利用函数启动另外的函数,将输入的字符串转化为大写
upper.c#include#include#includeint main(){ char ch; while((ch=getchar()) != EOF) putchar(toupper(ch)); exit(0);} usupper.c#include#include#includeint main(int argc,c转载 2012-07-25 15:05:44 · 639 阅读 · 0 评论 -
next_permutation()实现全排序
#include #include #include void func(const char *str_in) { std::string str(str_in); std::sort(str.begin(),str.end()); std::cout do {转载 2012-07-02 15:34:14 · 486 阅读 · 0 评论 -
float转化为string、string转化为float
float_inverse_string.c#include#includeint main(){ char a[30]="123"; char b[30]; float a1,b1=34555.0; a1=atof(a); gcvt(b1,5,b); printf("%f\n\n",a1); printf("%s\n",b); return 0;原创 2012-06-18 16:54:26 · 4214 阅读 · 0 评论 -
C/C++/C#面试题精选4
问题(16):运行如下的C++代码,输出是什么?class A{public: virtualvoid Fun(int number = 10) { std::cout "A::Fun with number " }};class B:public A{public: virtualvoid Fun(int numb转载 2012-08-20 21:24:25 · 603 阅读 · 0 评论