华为机试

华为实习生机试

£可爱£侵袭症+ 提交于 2019-12-06 11:55:17
一共三道题目,都比较简单。 第一道忘了,考察vector的用法 第二道考察map的用法,主要是排序 第三道并查集 除了第三道不知道为啥没有A出来,其中第二道考察了map如何排序,还是比较不错的。 输入字符串,最后输出每个字母出现的次数。如果不是字母不统计。最后按照出现的次数进行从大到小排序,如果次数相同,谁先出现在字符串里面就排在前面。 map是没法直接排序的,它是由pair组成的,我们定义一个 pair类型 ,再把这些pair放到vector里面进行sort排序。 #include <iostream> #include <stdio.h> #include <algorithm> #include <math.h> #include <string.h> #include <set> #include <map> #include <vector> using namespace std ; const int maxn = 111 ; map < char , int > dic; typedef pair< char , int > pp; //定义pair vector <pp> boom; map < char , int > ran; //字符出现的先后顺序 bool cmp(pp a,pp b) { if (a.second==b.second) return

《牛客网》——华为机试在线训练——找最长连续数字串

痴心易碎 提交于 2019-12-05 18:54:41
例如输入:abcd123.4567.890.123 输出:123.4567.890 “.”可以作为连接符连接两个数字,但是要求"."两边必须都是数字。 面试时遇到的题,因为忽略了对‘0’的处理,所以挂了。 #include<iostream> #include<stdio.h> #define MAX_SIZE 0x500 bool IsDotCorrect(char*szInput, int i, int nLastCmpPos, int nLen)//Check if it's a correct dot. { if (nLastCmpPos < 0) { return false; } if ((i - 1 >= 0 && i + 1 <= nLen - 1 && (szInput[i - 1] >= '0' && szInput[i - 1] <= '9') && (szInput[i + 1] >= '0' && szInput[i + 1] <= '9')) && ((szInput[i + 1] - szInput[nLastCmpPos]) == 1 && szInput[nLastCmpPos] != '0')) { return true; } return false; } int main() { char szInput[MAX_SIZE] = { 0 }

《牛客网》——华为机试在线训练——迷宫问题

♀尐吖头ヾ 提交于 2019-12-05 02:54:23
题目描述 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。入口点为[0,0],既第一空格是可以走的路。 Input 一个N × M的二维数组,表示一个迷宫。数据保证有唯一解,不考虑有多解的情况,即迷宫只有一条通道。 Output 左上角到右下角的最短路径,格式如样例所示。 Sample Input 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 Sample Output (0, 0) (1, 0) (2, 0) (2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4) 输入描述: 输入两个整数,分别表示二位数组的行数,列数。再输入相应的数组,其中的1表示墙壁,0表示可以走的路。数据保证有唯一解,不考虑有多解的情况,即迷宫只有一条通道。 输出描述: 左上角到右下角的最短路径,格式如样例所示。 示例1 输入 复制 5 5 0 1 0 0 0 0 1

《牛客网》——华为机试在线训练——小球落地5次

风流意气都作罢 提交于 2019-12-05 02:54:08
题目描述 假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高? /** * 统计出第5次落地时,共经过多少米? * * @param high 球的起始高度 * @return 英文字母的个数 */ public static double getJourney(int high) { return 0; } /** * 统计出第5次反弹多高? * * @param high 球的起始高度 * @return 空格的个数 */ public static double getTenthHigh(int high) { return 0; } 输入描述: 输入起始高度,int型 输出描述: 分别输出第5次落地时,共经过多少米第5次反弹多高 示例1 输入 复制 1 输出 复制 2.875 0.03125代码: #include <iostream> #include <stdio.h> #include <string.h> #include <math.h> int main() { float nHight = 0; float nTotalHight = 0; while(scanf("%f", &nHight) != EOF) { //scanf("%f", &nHight); if(nHight <= 0)

《牛客网》——华为机试在线训练

一个人想着一个人 提交于 2019-12-04 05:34:37
1、 题目描述 计算字符串最后一个单词的长度,单词以空格隔开。 输入描述: 一行字符串,非空,长度小于5000。 输出描述: 整数N,最后一个单词的长度。 示例1 输入 复制 hello world 输出 复制 5代码: #include <iostream> #include <string.h> //#include <strsafe.h> #include <stdio.h> #include <cstdio> #define MAX_BUFF_SIZE 5000 int main() { char InputBuff[MAX_BUFF_SIZE] = {0}; //scanf("%s", InputBuff); gets(InputBuff); if(strlen(InputBuff) > 5000) { return 0; } int nLen = strlen(InputBuff); while(InputBuff[nLen - 1] != ' ' && nLen > 0) { nLen--; } //printf("%s", InputBuff + nLen); printf("%d", strlen(InputBuff) - nLen); return 0; } 2、 题目描述 写出一个程序,接受一个由字母和数字组成的字符串,和一个字符

华为机试-质数因子

喜夏-厌秋 提交于 2019-11-30 12:00:29
题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) 最后一个数后面也要有空格 详细描述: 函数接口说明: public String getResult(long ulDataInput) 输入参数: long ulDataInput:输入的正整数 返回值: String 输入描述: 输入一个long型整数 输出描述: 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。 示例1 输入 180 输出 #include <iostream>#include <math.h>#include <vector>using namespace std;long n;vector<int> vec;bool prime = true;int r=2;int isPrimer(long n){ if(n==2) return 1; if(n%2==0) return 0; for(int i=3;i<sqrt(n);i++) { if(n%i==0) return 1; }}int main(){ cin>>n; if(n == 2||n==3) vec.push_back(n); else while(n>2) if(n%r==0) if(prime) { n=n/r; vec.push_back

牛客网-华为机试练习题 13

落爺英雄遲暮 提交于 2019-11-27 07:54:15
牛客网-华为机试练习题 13 题目描述 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 接口说明 /** * 反转句子 * * @param sentence 原句子 * @return 反转后的句子 */ public String reverse(String sentence); 输入描述: 将一个英文语句以单词为单位逆序排放。 输出描述: 得到逆序的句子 示例1 输入 I am a boy 输出 boy a am I 思路: 逆序就两种思路: 一种是使用栈,对每个元素进行入栈,然后出栈。 一种是使用数组,从后往前进行遍历,- 从length-1遍历到0,闭区间 这里是对句子的单词进行逆序,很自然的,在逆序前面对句子使用split进行划分,参数是空格 解决代码 import java . util . Stack ; import java . util . Scanner ; public class Main { public static void main ( String [ ] args ) { Stack stack = new Stack ( ) ; Scanner sc = new Scanner ( System . in ) ;

华为机试-14-字符串排列

不羁岁月 提交于 2019-11-26 16:38:41
字符串排列 题目:给定n个字符串,请对n个字符串按照字典序排列。 输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。 输出描述: 数据输出n行,输出结果为按照字典序排列的字符串。 示例: 输入 3 cap to cat 输出 cap cat to 代码 import java . util . Scanner ; import java . util . Collections ; import java . util . ArrayList ; public class Main { public static void main ( String [ ] args ) { Scanner sc = new Scanner ( System . in ) ; int a = Integer . parseInt ( sc . nextLine ( ) ) ; ArrayList < String > strList = new ArrayList < String > ( ) ; for ( int i = 0 ; i < a ; i ++ ) { String s = sc . nextLine ( ) ; strList . add ( s ) ; } Collections . sort (