您的位置:首页 > 其它

2016-4-01华为校招实习机试

2016-04-01 20:27 393 查看
通知4月1号上午8点半开始考试,到华为的时候8点10分。统一坐在阶梯教室等待了到8点30分,陆续有带头的人过来,1号教室,2号教室,3号教室,我是分配到4号教室的。

带到机试教室,进去位置随便坐,点名,发放登录账号和密码。打开华为oj平台。

第一题:统计一串字符串中的英文字母个数,空格个数,数字个数,其他字符个数。相对而言比较简单,8分钟做完,之前在牛客网站上真好做过。虽然不是最好的方法,但是比较容易理解。2015年也有这道题,只是输出格式由2015的一行一行变成26,3,10,12。这种格式,代码不做调整了。

输入:输入一行字符串,可以有空格

1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\/;p0-=\\][


输出:统计其中英文字符,空格字符,数字字符,其他字符的个数

26
3
10
12


import java.util.Scanner;

public class Main{

public static void main(String args[]){

Scanner scan=new Scanner(System.in);

while(scan.hasNext()){

String str=scan.nextLine();

getOtherCharCount(str);

}

}

public static void getOtherCharCount(String str){

char ch[]=str.toCharArray();

int count1=0;

int count2=0;

int count3=0;

int count4=0;

for(int i=0;i<ch.length;i++){

if((ch[i]>='a'&&ch[i]<='z')||ch[i]>='A'&&ch[i]<='Z'){

count1++;

}else if(ch[i]==' '){

count2++;

}else if(ch[i]>'0'&&ch[i]<'9'){

count3++;

}

}

count4=ch.length-count1-count2-count3;

System.out.println(count1);

System.out.println(count2);

System.out.println(count3);

System.out.println(count4);

}

}

第二题:帮助小熊搬家从B处搬家到H处,B,H处在一个R*C的矩阵中,矩阵每个格子里面可以是-或者#。-代表这个格子可以通过,#代表这个格子不可以通过。输出‘Y’代表B可以到达H处,输出‘N’代表B不可以到达H处。

输入:

整数 R(矩阵行数)

整数C(矩阵列数)

矩阵内容

示例:

1

5

B--H#

输出:Y/N

Y

当时想到的是递归做,但是没用弄出来。今天暂且记录下来。下次来写

第三题:实现一个简单的自助售货系统,实现投币,购买商品,退币,输出库存商品及存钱盒信息的功能

1:系统中存在以下商品和钱币

三种商品每种包括商品名称,单价,数量三种属性。

A1 5件 2元/件

A2 10件 3元/件

A3 14件 4元/件

存钱盒存在以下三种

1元 5张

2元 5张

5元 3张

2系统退币原则:根据存钱盒内信息 按钱币总张数最少的原则退币,即时用户只投币不购买商品也按这个原则

3约束:不需要考虑命令的非法性

4输入说明

1)投币:命令格式p 钱币名额 可以投多次,但只能是1,2,5元

2)购买命令:b 商品名称

一条命令只能购买一件商品,可以多次购买;购买成功后,自动售货机对应商品减一,存钱盒中金额相应增加,全部购买完需要按照退币原则退回多余硬币

例如:p 5,p 5,p 5,b A3,b A3,b A2

5输出说明

输出自动售货机中商品和钱盒信息,包含商品名称,数量,存钱盒面额,数量。根据商品名称从小到大进行排列,输出结果中商品名称和数量用空格分开

存钱盒根据钱币面值从小到大排列,钱币面值与数量使用空格分开,不同信息间使用逗号分开,商品信息与存钱盒信息使用分号分开

例如:返回结果:A1 5,A2 9,A3 12;1 5,2 3,5 6

此题输入输出比较简单 主要考虑退钱原则。

import java.util.Scanner;

public class huawei3 {

public static void main(String[] args) {

Scanner scan=new Scanner(System.in);

while(scan.hasNext()){

String str=scan.nextLine();

int count1=5; int count2=5; int count5=3;int counta1=5; int counta2=10; int counta3=14;

int danjia1=2; int danjia2=3; int danjia3=4; int sum;

String str1[]=str.split(",");

for(int i=0;i<str1.length;i++){

char f=str1[i].charAt(0);char s=str1[i].charAt(2);

if(f=='p'){

if(s=='1')

count1++;

if(s=='2')

count2++;

if(s=='5')

count5++;

}else if(f=='b'&&s=='A'){

char r=str1[i].charAt(3);

if(r=='1')

counta1--;

if(r=='2')

counta2--;

if(r=='3')

counta3--;

}

}

int num=(count1-5)*1+(count2-5)*2+(count5-5)*5-2*(5-counta1)-3*(10-counta2)-4*(14-counta3);

if(num>=5){

int num5=num/5;

count5-=num5;

int yushu5=num%5;

if(yushu5==4){

count2-=2;

}else if(yushu5==3){

count2--;

count1--;

}else if(yushu5==2){

count2--;

}else if(yushu5==1){

count1--;

}

}else if(num==4){

count2-=2;

}else if(num==3){

count2--;

count1--;

}else if(num==2){

count2--;

}else if(num==1){

count1--;

}

System.out.println("A1 "+counta1+","+"A2 "+counta2+","+"A3 "+counta3+";"+"1 "+count1+","+"2 "+count2+","+"3 "+count5);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: