华为机试
文章平均质量分 62
小地盘
这个作者很懒,什么都没留下…
展开
-
华为机试—逆序链表输出
题目描述: 将输入的一个单向链表,逆序后输出链表中的值。链表定义如下: typedef struct tagListNode { int value; struct tagListNode *next; }ListNode; 要求实现函数: void converse(ListNode **head); 【输入】head:原创 2015-01-07 00:07:28 · 2453 阅读 · 2 评论 -
华为机试—字符串替代(aa-bc)
将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。要求实现函数:void convert(char *input,char* out原创 2015-01-07 00:12:16 · 3240 阅读 · 2 评论 -
华为机试—子串分离
题目描述: 通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 如果输入“abc def gh i d”,结果将是abc,def,gh,i,d, 要求实现函数: void DivideString(const char *pInputS原创 2015-01-07 00:05:48 · 2374 阅读 · 4 评论 -
华为机试—删除连续出现大于等于3的数字
输入一组数字(最多15个),去掉连续次数大于等于三的数字,如果去掉后仍有连续次数大于等于三的,继续进行同样的处理,直到结果中没有出现连续次数大于等于三的数字为止。如果最终全部消除完了 输出“none”输入:1 1 1 1 2 2 2 1 3 3 3 3 1 1 1输出:none #include #include using namespace std;原创 2015-01-07 00:07:48 · 2617 阅读 · 2 评论 -
华为机试—输出第n个丑数
#include //判断一个数是否为丑数bool IsChou(__int64 num){ while(num!=0) { if(num == 1) return 1; else if(num % 2 == 0) num /= 2; else if(num % 3 == 0) num /= 3; else if(num % 5 == 0) nu原创 2015-01-08 12:50:00 · 2825 阅读 · 6 评论 -
华为机试—取石子游戏(高级题160分)
Problem Description1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Secondwin".先取者胜输出"Firstwin".Input输入有多组.每组第1行是2Output先取者负输出"Secondwin". 先取者胜输出"Firstwin". 参看Sample O原创 2015-01-08 14:38:13 · 2634 阅读 · 0 评论 -
华为机试—整数数组排序(字符串输入输出)
数组以字符串形式输入输出,这点得注意下,还有一点就是,输出时数字以逗号隔开,最后一个没有逗号。#include #include using namespace std;int compare(const void *p,const void *q){ return *(int *)p-*(int *)q;}int main(){ int a[1024]; int原创 2015-01-08 12:18:51 · 2575 阅读 · 2 评论 -
华为机试—寻找丑数(由浅入深优化至20ms)
题目描述: 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。输入: 输入包括一个整数N(1输出: 可能有多组测试数据,对于每组数据,输出第N个丑数。样例输入: 3样例输出: 3所谓原创 2015-01-08 14:01:16 · 2139 阅读 · 2 评论 -
华为机试—翻译电话号码
例如:输入:OneTwoThree 输出:123 输入:OneTwoDoubleTwo 输出:1222 输入:1Two2 输出:ERROR 输入:DoubleDoubleTwo 输出:ERROR 有空格,非法字符,两个Double相连,Double位于最后一个单词 都错误。#include原创 2015-01-09 14:28:12 · 2818 阅读 · 2 评论 -
华为机试—N皇后问题(高级题160分:两种回溯法解决 吐血整理)
一、问题描述: 在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。输入: 给定棋盘的大小n (n ≤ 13) 输出: 输出有多少种放置方法。二、解题思路: 要解决N皇后原创 2015-01-09 16:11:13 · 7867 阅读 · 4 评论 -
华为机试—整数逆序并去重
输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。如果是负数,比如输入-175,输出-571。#include #include using namespace std;//逆序char * revs(char *s){ int j = strlen(s)-1;原创 2015-01-09 18:37:05 · 2437 阅读 · 0 评论 -
华为机试—物品放箩筐(高级题160分,含体积价值:贪心算法)
#include using namespace std;int m[100][100];int min(int a,int b){ return (a<b)?a:b;}int max(int a,int b){ return (a>b)?a:b;}void knapsack(int v[],int w[],int c,int n){ int jMax=mi原创 2015-01-11 00:44:58 · 2725 阅读 · 1 评论 -
华为机试—水仙花数
判断给定正整数是不是“水仙花数”。“水仙花数”是指一个三位数,其各位数字的立方和等于该数,例如153=1^3+5^3+3^3。输入说明:有多组数据,每组数据为一个正整数n(0输出说明:对于每一组数据,输出一个yes或no(表示该数是否为“水仙花数”)。输入样本:1531113704220输出样本:yesnoyesno原创 2015-01-11 01:16:15 · 3349 阅读 · 0 评论 -
华为机试—等差数列
请写一个程序,判断给定整数序列能否构成等差数列。输入说明:多组数据,每组输入数据由两行构成,第一行只有一个整数n(输出说明:对于每一组数据,输出一个yes或no,表示该序列能否构成等差数列。输入样本:623 15 4 18 35 1133 1 20输出样本:noyes#include #include原创 2015-01-11 01:13:27 · 2226 阅读 · 0 评论 -
华为机试—Smith数
对于一个正整数n,如果它的各位之和等于它的所有质因数的各位之和,则该数被称为Smith数。例如,31257=3*3*23*151,31257 的各位数字之和为3+1+2+5+7=18,它的所有质因数的各位数字之和为3+3+2+3+1+5+1=18,因此,31257是一个Smith数。编写一个程序判断输入的正整数是不是Smith数。输入说明:有多组数据,每组数据只有一个整数n(输原创 2015-01-11 01:28:54 · 2771 阅读 · 1 评论 -
华为机试—逆序链表输出
题目描述: 将输入的一个单向链表,逆序后输出链表中的值。链表定义如下: typedef struct tagListNode { int value; struct tagListNode *next; }ListNode; 要求实现函数: void converse(ListNode **head); 【输入】head:转载 2015-01-11 00:40:44 · 1050 阅读 · 0 评论 -
华为机试—01背包(等于总值)
给定一个总值,和一个整数数组,从数组中找出和等于总值的那几个数,如果存在,数相应的下标为1,其余的为0,如果不存在,输出no。#include #include int a[50];int f[50]={0};int find(int n,int m){ if(n==0) return 1;//刚好递归结束 else if(n0&&m==0) return原创 2015-01-11 13:41:12 · 2441 阅读 · 0 评论 -
华为机试—二维数组列最小值
比较二维数组列最小值,组成一个新数组返回。实现核心算法,不需要使用IO输入:{{5,6,1,16},{7,3,9}}输出:{1,3}import java.util.Arrays;public class Col { public static int[] getColMin(int a[][]) { int[] res = new int[a.leng原创 2015-01-11 13:46:21 · 2264 阅读 · 0 评论 -
华为机试—if语句是否合法
编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。输入:if((a==1)&&(b==1))输出:RIGTH 3 3原创 2015-01-10 00:12:50 · 2288 阅读 · 4 评论 -
华为机试—32位处理器上数值转换
在 32 位处理器上,将任一整数转换为二进制形式。 要求实现函数: void DecToBin (unsigned int iDec, char pBin[32])输入:iDec 需要转换的十进制整数 输出:pBin 转换为二进制后的字符串,高位在左边,不足 32位补0 示例 输入:123输出:{“00000000000000原创 2015-01-10 00:16:44 · 2156 阅读 · 1 评论 -
华为机试—围棋吃子(下围棋)判决(高级题160分:深度优先遍历)(图文吐血整理)
题目:围棋中,一个棋子在棋盘上,与它直接紧邻的空点是这个棋子的“气”,棋子直接紧邻的点上,如果有同色妻子存在,则它们便相互组成一个不可分割的整体,它们的“气”也应一并计算。如果一个或一片棋子的“气”为0,那它们将被吃掉。1. 一个棋子的情况,如下左图,白棋右侧还有一个空点,此时白棋气为1,不会被吃掉。当黑棋在此空点下棋后,白棋气为0,将被吃掉。2. 一片棋子的情况,如下图,原创 2015-01-12 00:14:51 · 21611 阅读 · 7 评论 -
华为机试—字符串首字母转换成大写
举例:输入:this is a book返回:This Is A Book#include#include#includeint main(){ char input[]="this is a book"; char output[256]={'\0'}; int i,len; len=strlen(input); printf("变换前的字符串为:%s原创 2015-01-12 00:12:16 · 2996 阅读 · 0 评论 -
华为机试—添加符号使等式成立(高级题160分)
输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号或者不填,使得等式成立。1 2 3 4 5 6 7 8 9 = X比如:12-34+5-67+89 = 51+23+4-5+6-7-8-9 = 5请编写程序,统计满足输入整数的所有等式个数。输入: 正整数,等式右边的数字输出: 使该等式成立的个数原创 2015-01-12 00:03:41 · 3274 阅读 · 4 评论 -
华为机试—统计单词个数(map)
输入n个单词,统计各个单词出现的个数#include #include #include using namespace std;int main(){ map k; string word; while(cin>>word) ++k[word]; for(map::iterator i=k.begin();i!=k.end();i++) cout<<(*i).原创 2015-01-12 00:28:36 · 2380 阅读 · 0 评论 -
华为机试—串小写变大写
输入字符串单词,将单词小写全部变为大写。#include #include #include using namespace std;int main(){ vector ss; string s; while(cin>>s) ss.push_back(s); for(int i=0;i<ss.size();i++) { for(int j=0;j<ss[i].原创 2015-01-12 00:37:10 · 2295 阅读 · 0 评论 -
华为机试—多个数的最大公约数
题目:求最大公约数输入一组正整数(数量小于20),输出其最大公约数。输入:121 33 44 11 1111输出:11基本思路:从第一个数开始,和第二个数比较找它两的最大公约数,然后找出的最大公约数和第三个数比较,依次类推。。。#include int gcd(int a,int b){ return a%b?gcd(b,a%b):b;}i原创 2014-12-23 09:32:12 · 2817 阅读 · 0 评论 -
华为机试—括号匹配
输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.Smpleinput: dfa(sdf)df[dfds(dfd)] SmpleoutPut:0#include int main(){ char a[100],c,i=0; int flag; scanf("%c"原创 2015-01-11 12:57:22 · 2268 阅读 · 0 评论 -
华为机试—计算麻将的番数(高级题160分)
一.题目如下二.题目分析麻将和牌有两种形式,即:模式1 :11,11,11,11,11,11,11 模式2: 11,123,123,123,123(全部或者部分123可以被111,1111替代) 注:123=连续3张同花色牌,如4D5D6D。111=3张同样的牌,如3T3T3T。 条=T,筒=D 模式1即称之为“巧7对原创 2015-01-13 12:11:04 · 4099 阅读 · 3 评论 -
华为机试—“17进制”转“10进制”
17进制转成10进制,输入是数字跟大写字母。例如输入G、11、FF,分别输出16、18、270#include #include using namespace std;int main(){ string s; int len,factor=17,num; bool sign;//用来标志输入字符串是否非法 while(cin>>s) { len = s.size()原创 2015-01-13 10:07:41 · 2504 阅读 · 0 评论 -
华为机试—算日期
题目:算日期输入一个日期,输出这是这一年的第几天。(题目中没有给出闰年的定义)输入 20131231输出 365#include //判断是否为闰年int isleapyear(int year) { if(year%4==0 && year%100!=0 || year%400==0) return 1; r原创 2014-12-24 09:53:28 · 2816 阅读 · 0 评论 -
华为机试—拼音翻译成阿拉伯数字(只有数字拼音)
题目:拼音翻译成阿拉伯数字(只有数字拼音)输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万为了处理方便,输入一定是只有数字拼音的,没有其他的单词或者字符。输入:JiuBaWuSi输出:9854基本思路:可以看出拼音最短为2个字符,最长为4个字符。两位开始扫,没有,扫三位,三位没有扫原创 2014-12-24 09:55:51 · 3688 阅读 · 0 评论 -
华为机试—拼音翻译成阿拉伯数字(有Wan,Qian,Bai,Shi单位)
题目:拼音翻译成阿拉伯数字输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万为了处理方便,输入一定是数字带单位的,例如10会是YiShi,而不是一个单独的Shi. 输入 JiuWanJiuQianJiuBaiJiuShiJiu输出 99999基本思路:遍历找到下一个大写字母,截取子串,比原创 2014-12-24 17:25:17 · 3921 阅读 · 0 评论 -
华为机试—亮着电灯的盏数(优化过的双重for)
题目:亮着电灯的盏数一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的原创 2014-12-24 18:59:22 · 2621 阅读 · 0 评论 -
华为机试—亮着电灯的盏数(1—N完全平方数的个数)
题目:亮着电灯的盏数一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的原创 2014-12-25 10:12:24 · 3217 阅读 · 0 评论 -
华为机试—输出大写字母
题目:输出大写字母输入一个字符串,输出其中的大写字母 输入 2, sdARSFGfg输出 ARSFG#include #include using namespace std; void filter(string str) { int i,len; len=str.length(); for(i=0;i<l原创 2014-12-24 18:04:59 · 2744 阅读 · 0 评论 -
华为机试—大数相减
题目:大数相减输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。 备注:1、两个整数都是正整数,被减数大于减数 示例: 输入:1000000000000001 1 输出:1000000000000000#include #include #define MA原创 2014-12-25 12:34:04 · 2768 阅读 · 0 评论 -
华为机试—姓名的夫妻相
题目:夫妻相在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是“夫妻相”。所谓“夫妻相”,就是两个人看上去比较般配,长相、身材等某些方面有一定的相似度。本题则另辟蹊径,从人的姓名维度,以字母重复个数来寻找最具“夫妻相”的人。题目中预先给定一组女士的姓名拼音。输入男士的姓名拼音(拼音中间可以有空格,字母全部小写),依预先给定姓名拼音的先后遍历所有姓名,输出字母重复数最多的女士姓名。原创 2014-12-25 14:14:25 · 4664 阅读 · 0 评论 -
华为机试—元素按奇偶排序 (金字塔)
题目:元素按奇偶排序给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[]数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在最大元素放置的那个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input[] = {3,原创 2014-12-25 15:49:06 · 2566 阅读 · 6 评论 -
华为机试—从考试成绩中划出及格线
题目:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分 输入:输入10个整数,取值0~100输出:输出及格线,10的倍数#include #include int compare原创 2014-12-25 09:42:52 · 5183 阅读 · 2 评论 -
华为机试—地铁换乘(图文吐血整理)
题目:地铁换乘描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14原创 2014-12-26 08:38:39 · 20753 阅读 · 3 评论