自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 工作已定 结束招聘季的奔波

早早就被告诉,九十月招聘季,将会是非常疲惫的,从身体到心里上,本以为早早做好准备,结果下来,疲惫还是猝不及防的到来,回想一下,总共面试了7家公司,有四家公司拿到了offer,最终选择的是去哪儿网,卖身契已交,在我没有拿到offer的三家公司中,最不甘心的是华为,下面就说说,我与华为的故事吧。    关于华为,最早听说时,华为荣耀3c才刚出来,那时候对于华为公司的了解,只是知道会加班到很晚,当然

2016-10-22 13:26:52 502

原创 华为oj 笔画

看到这道题我激动了,我靠,不得不发自内心的说一句,华为的选题还是挺好的,这道题很有趣,需要两步判断1.判断整幅图是不是联通的2.判断这个这个连通图是否是欧拉回路对于第一个问题,并查集就是为解决它而生的,我靠容我再次激动一下,我心心念念的并查集终于有用武之地了。下面给出我看了五遍以上的一个大神的博客http://blog.csdn.net/dellaserss/article/det

2016-08-28 12:25:25 1097

原创 华为oj 查找兄弟单词

此题说的比较复杂,其实综合起来大的方向分两步。1.将给定的字符串按字典序存储(只要进行一次快排全部解决,快排对于字符串的大小的比较应该是调用strcmp,结果就是按照字典序排列)2.查找兄弟单词(对于一个单词,在字典中遍历进行查找比较,比较过程中,兄弟子串,第一条满足,两个字符串不相等,第二条满足,两个字符串排序之后是相等的)分析一下时间复杂度:设每个字符串平均长度为K,时间最大消

2016-08-28 11:54:40 742

原创 华为面试 手写代码 判断int类型的数是否是回文

举个例子 123321就是回文,同样12321也是,但是123421不是。其实刚看到这道题时,我们本能的想到的是转换成字符串进行比较,这么做肯定能做出来,但是就丧失了这道题的意义,这道题其实是一道简单题。我想到的思路是把int类型的数倒过来,和原来比较是否相等就可以,我们需要做的只是把这个数倒过来,那就每次对10取余就可以啦! 直接上代码吧!#includeusing n

2016-08-24 21:02:16 1512

原创 华为 oj 简单密码破解&&汽水瓶&&删除字符串中出现次数最少的字符&&字符串排序

这四道题就不上图了,因为太简单,应该放在简单题中。第一题.这道题只需要注意字母‘Z’时候的转换,直接上代码#include#includeusing namespace std;int main(){ string inStr = ""; cin >> inStr; int i = 0; for (; i<inStr.size(); i++) { if (inSt

2016-08-18 21:17:21 378

原创 华为oj 密码验证合格程序

这道题也就是三个判断,第一个判断,第二个判断,很简单第二个一个循环就可以统计出来,主要难点在第三个判断上,关于第三个判断给出一个大神写的博客自己体会一下http://blog.csdn.net/hackbuteer1/article/details/7968623在此简单说一下,主要分三步1.建立后缀数组2.排序3.相邻比较整体时间复杂度最大的在排序,快排的时间复杂度为

2016-08-17 11:37:24 334

原创 华为oj 简单错误记录

这道题不难,注意几点,最多八条记录的意思是超过八条,只取最后的八条,文件名称最多16个字符只要这两点做好了就可以了,但是比较尴尬的是,我做出一种解法,在别的平台所有测试用例通过,在华为官方显示格式错误,我无论怎么修改都过不了,如果哪位大神看到,求指点:1. 华为测试平台结果显示格式错误,本人找不到什么错误。#include#include#includeusing namespace

2016-08-16 21:41:33 911

原创 华为oj 识别有效的IP地址和掩码并进行分类统计

此题,可以说挺难,但我认为不是难,是恶心,没有什么高深的算法,只是有很多细节要注意,此题分两步。1.将字符串转换成对应的ip地址和子网掩码。2.进行分类,判断。当然对于ip的分类比较好分类,但是子网掩码你需要判断,是不是开头全是1之后全是0,这也比较恶心。在上代码之前,说一下,这道题测试用例就1个,而且就是题目给出的,你直接cout#include#includeusing

2016-08-16 11:32:40 1497 1

原创 华为oj 坐标移动

这道题其实没什么好说的,唯一一点就是遇到无效的比如字母 X,或者前面的都对但是后来没有分号比如 A111D0,这两种都是无效的一点发现这种直接跳过找到下一个分号位置就可以了,接着往下计算。下面直接给出代码#include#includeusing namespace std;void GetValue(char N, int num, int &x, int &y){ swit

2016-08-14 21:15:32 376

原创 华为oj 购物单

其实,这种给定总量,求在规定总量内价值最大是多少,这是点型的01背包问题,当然这道题加了一点其他的东西,就是主件附件,只有主件已经购买才能买附件,那我们就在加入附件之前判断一下主件是否已经购买了就可以了,所以这道题我们应该分量部分解决。1.实现经典的01背包算法(动态规划)2.在循环过程中,如果遇到附件,判断其主件是否已经存在,若存在可以购买。对于经典的01背包问题,可以直接问度娘,很

2016-08-13 20:13:54 1039

原创 华为oj 字串的连接最长路径查找

这道题应该是初级中最难的了吧,这道题整体思路应该是,把每个字符串看成一个节点,这样我们要求的就是在一个有向图中两点形成的最长路径,对于这种类型的题目,可以考虑采用佛洛依德算法,因为它是查找有向图所有两点之间的路径长度,这样很容易就会找到最长的路径!!!程序如下://弗洛伊德算法求最短路径,动态规划,有待深究//dp[i,j,k]=min{dp[i,j,k-1],dp[i,k,k-1]+d

2016-03-11 11:05:23 1674 1

原创 华为oj 字符串个数统计&&数字颠倒&&字符串翻转&&字符逆序&&求int型数据在内存中存储时1的个数

同样只上程序,都是简单题#includeusing namespace std;int main(){ int in[128], count = 0; char n,temp[100]; memset(in, 0, sizeof(int)* 128); gets(temp); int len = strlen(temp); if (len <= 0) { return

2016-03-11 10:27:55 632

原创 华为oj 取近似值&&合并表记录&&提取不重复的整数

不上图了,程序顺序和题目对应1.要注意负数的情况处理#includeusing namespace std;int main(){ float in; cin >> in; int s = in * 10; int flag=1; if (s < 0) { flag = -flag; } s *= flag; if (flag==1) { if ((s %

2016-03-11 10:18:15 484

原创 华为oj 进制转换&&质数因子

利用c语言格式化输入,格式化输出#includeusing namespace std;int main(){int a;scanf("%x",&a);printf("%d",a);return 0;}#include #include using namespace std;bool isPrime(int n){int c = 0;for(int i=1;

2016-03-11 09:59:58 391

原创 华为oj 明明的随机数&&计算字符个数

在此提供三种解法,其实三种解法殊途同归,不就是排个序,去个重就好!1.利用map特点,插入map之后,会自动根据关键字排序,而且不会出现相同的关键字,正好满足特性#include#includeusing namespace std;int main(){ map in; int num, temp; cin >> num; for (int i = 0; i<num; i

2016-03-11 09:48:28 1844

原创 华为oj 字符逆序&&求解立方根&&最小公倍数

图就不上了简单了,程序依次和题目对应#includeusing namespace std;int main(){char in[100];gets(in);int len =strlen(in);for(int i=len-1;i>=0;i--){cout<<in[i];}cout<<endl;return 0;}#includeusing namespace

2016-03-10 20:40:49 318

原创 华为oj 等差数列&&字符统计

应该是整个oj中最简单的了吧!#includeusing namespace std;int main(){int n;cin>>n;if(n<=0){return -1;}cout<<2*n+3*n*(n-1)/2<<endl;return 0;}本题提供两个程序:算法相同只是数据结构不同一个使用的是结构体,一个使用的是map整体思路需要统计出每个字符

2016-03-10 20:23:27 389

原创 华为oj 记负均正&&自守数

#includeusing namespace std;bool IsNum(int i){ int s = i*i; while (i) { if (s % 10 == i % 10) { s = s / 10; i = i / 10; } else { break; } } if (!i) { return true; } e

2016-03-10 11:04:39 326

原创 华为oj 寻找等差数列

本题提供两种解法:1.找到首尾之间的所有的素数形成一个数组prime,那么这个数组形成的等差数列中,公差最大的的就是这个数列首尾数字的差值,对公差从1到最大值进行循环,找到数列中公差等于上述范围的所有数列,找到到数列包含数字最多的就可以了,时间复杂度O(kn^2)。#includeusing namespace std;int prime[200];int Count = 0;vo

2016-03-10 10:40:57 1382

原创 华为oj 表示数字

思路很简单,设置一个flag,没当从数字到非数字变化是就改变flag值,输出一个*就可以了!#includeusing namespace std;int main(){ char inStr[50]; int len; bool flag; gets_s(inStr); len = strlen(inStr); if (len <= 0) { return 0;

2016-03-09 21:02:34 396

原创 华为oj 人民币转换

测试发现我的程序还有bug,不过可以通过oj。。。#include#includeusing namespace std;int main(){ string tran1[10] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; string tran2[5] = { "拾", "佰", "仟", "万", "亿" };

2016-03-09 17:33:42 1186

原创 华为oj 记票统计

比较好理解直接上代码#include#includeusing namespace std;struct candite{ char name[10]; int votecount;};int main(){ int num,invalid=0; vector in; char sname[10] = { 0 }; candite p; bool flag =

2016-03-07 11:09:20 606

原创 华为oj 201301 JAVA题目0-1级

有人说用“背包问题”可以解决(没有验证),因为对于动态规划还是有些许抗拒,所以还是用别的方法解决!思路如下:1.把数据分成三类,第一类,能被5整除的(包括既能被5整除又能被3整除的);第二类,能被3整除的;第三类,其它数字。2.分别算出前两类的数字和,sumj,sumk3.将第三类数字进行划分组合(我程序实现的有bug,但是能通过oj,在划分组合时我只用了一次循环,这是远远不够的,

2016-03-07 10:57:06 800

原创 华为oj 在字符串中找出连续最长的数字串

记得好像是去年有个公司的编程题,简单题,用一个位置s,和一个最大长度maxlen,每次寻找找到大于maxlen就更新这两个值就可以了,思路很简单!#includeusing namespace std;int main(){ char in[100]; gets_s(in); int len = strlen(in); if (len == 0) { cout << 0 <

2016-03-07 10:08:17 718

原创 华为oj 合法IP

这题需要判断的只有输入的数字是否在0-255之间,其它错误没有,所有这样就简单了,利用格式化输入直接或去4部分的值然后进行判断就可以了#include using namespace std;int main(){ int ip1, ip2, ip3, ip4; scanf_s("%d.%d.%d.%d",&ip1,&ip2,&ip3,&ip4); if ((ip1 >= 0 &&

2016-03-07 10:00:27 319

原创 华为oj 密码强度等级

没有任何绕弯的地方,根据他的要求直接写就可以了,只不过代码较长,比较耗时!#include#includeusing namespace std;string getResult(int sum){ if (sum >= 90) { return "VERY_SECURE"; } else if (sum >= 80) { return "SECURE"; }

2016-03-07 09:54:17 400

原创 华为oj 统计大写字母个数&&求最大连续bit数

#includeusing namespace std;int main(){char in[100];int count=0;gets(in);int len=strlen(in);for(int i=0;i<len;i++){if(in[i]>='A'&&in[i]<='Z'){count++;}}cout<<count<<endl;}

2016-03-06 14:36:17 453

原创 华为oj 将真分数分解为埃及分数

整体思路:我们要保证所有数都是埃及分数,那么分母必然整除分子,每次埃及分数的分母为输入的数的分母除以分子(分子肯定为1),但是要注意当剩余分子为3时,需要特殊处理,程序如下。//华为oj真分数分解为埃及分数#include using namespace std;int main(){ int a=0, b=0, c=0; scanf_s("%d/%d",&a,&b); whi

2016-03-06 14:24:26 1250

原创 华为oj 字符串匹配

用一个数组存储每个字符出现的个数然后,然后进行判断就行!#include#includeusing namespace std;int main(){ int trans[128]; memset(trans, 0, sizeof(int)* 128); string in1, in2; cin >> in1 >> in2; for (int i = 0; i<in2.siz

2016-03-06 12:40:47 448

原创 华为oj 整形数组合并

将两组数合并到一组,然后进行排序,在输出的时候去重就行!!!#include#includeusing namespace std;int main(){ int num1, num2, out[100],temp; cin >> num1; for (int i = 0; i<num1; i++) { cin >> temp; out[i] = temp; } c

2016-03-06 12:27:22 353

原创 华为oj 计算字符串的相似度

采用递归的方式,每次返回三种操作的最小值,截止条件就是当两个字符串有一个为空的时候!!!#include #include using namespace std;int Min(int x,int y){ return (x>y) ? y:x; }int StringDistance(string A,int pa,int lenA,string B,int pb,int l

2016-03-06 11:18:18 642

原创 华为oj 超长正整数相加

大数相加,主要是处理进位位就可以了,就按加法正常处理就行,程序比较简单#includeusing namespace std;int main(){ char inStr1[100], inStr2[100], outStr[150]; int len1, len2, pos,s,t,i,j,k; cin >> inStr1 >> inStr2; len1 = strlen(

2016-03-04 13:47:31 313

原创 华为oj 尼科彻斯定理

其实这道题实质上我们要输出的东西就是一个等差数列,等差数列的元素个数为我们输入的数字 N 个,同时我们还知道这N个数字之和为N的立方,那么我们根据等差数列的性质可以轻易的得出每一项的值(用N来表示),对已等差数列我们只要知道,首项(N*N-N+1,自己推算一下即可),公差2,项数N,那么一切就简单的很了!!!#includeusing namespace std;int main()

2016-03-04 12:18:57 364

原创 华为oj 公共字串计算

此题是经典的动态规划的题:设c[i][j] 表示第一个字串从开始到 i 的位置,和第二个字串从开始到 j 的位置的最长公共字串的长度,那么我们可以根据题目得知一下条件1.如果pFirstStr[i+1]==pSecondStr[j+1],那么c[i+1][j+1]=c[i][j]+1;2.如果pFirstStr[i+1] != pSecondStr[j+1],那么c[i+1][j+1]=

2016-03-04 10:39:45 262

原创 华为oj 百钱买百鸡问题

本题有个巧妙的解法,思路r如果少买7只母鸡,就可多买4只公鸡和3只小鸡

2016-03-04 10:08:11 561

原创 华为oj 矩阵乘法

就按照矩阵相乘的方法进行运算就行,但是要注意输出格式按照矩阵输出,不是输出一整行!#includeusing namespace std;int main(){ int row1, line1, row2, line2, temp; int matirx1[10][10], matirx2[10][10],out[20][20]; memset(matirx1, 0, sizeo

2016-03-03 17:52:16 443

原创 华为oj 字符串通配符

本题,其实和分苹果的题有那么一丢丢的类似,在此提供两种能通过的解法(主要就是对于‘*’的处理)1.这种解法其实是错误的,但是也要说说他的思路,对于 ‘*’ 他直接找 ‘*’ 下一个字符是否出现在需要匹配的串中,并且找到那个位置,认为此位置到之前就是‘*’所匹配的内容。但是这种解法是错误的,在此给出一个测试用例J*Smi??JhonSSmith至于为什么他能通过,oj太烂被!

2016-03-03 10:31:37 903

原创 华为oj 24点游戏算法

思路很简单就只四个数中间有三个空,那就直接将四个运算符进行组合,分别放到3个空中就好了,代码当时copy别人的#includeusing namespace std;int cal(int a, int b, int c, int d, int i, int j, int k){ int sum = 0; if (i == 0)sum = a + b; else if (i ==

2016-03-03 09:10:04 868

原创 华为oj DNA序列

很简单直接找哪5个连续的字串中GC出现的次数高就行#includeusing namespace std;int main(){ char in[100] ; int start = 0, end = 0, num, len, finalstart, finalend, tempsum = 0, sum = 0; gets_s(in); len = strlen(in); ci

2016-03-03 09:02:58 344

原创 华为oj 查找输入整数二进制中1的个数

利用i&(i-1)进行判断,很标准的解法:#includeusing namespace std;int main(){ int num,count; cin>>num; count=0; while(num) { num=num&(num-1); count++; } cout

2016-03-03 08:44:14 479

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除