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。这种格式,代码不做调整了。
输入:输入一行字符串,可以有空格
输出:统计其中英文字符,空格字符,数字字符,其他字符的个数
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);
}
}
}
带到机试教室,进去位置随便坐,点名,发放登录账号和密码。打开华为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);
}
}
}
相关文章推荐
- ListView,GridView,单选默认选中,单选和多选盖布效果
- WEB服务器2--IIS架构(转)
- 关于XShell远程登录显示乱码问题的解决方案
- 网络:网络基础知识
- Use libvirt to conmunicate with qemu
- cocos2dx 3.3 + lua 学习笔记(04)--- 动作回调、函数回调、骨骼动画回调
- C++上机练习
- 113.失恋28天-缝补礼物(多重背包)
- C#-get/set和方法重载
- 专题一 Problem C
- libcurl上传文件到服务器的几种方式
- 10.ARM汇编指令集详解
- 0-1整数规划与隐枚举法-感受剪枝的魅力
- iOS 最新版 CocoaPods 的安装流程
- POJ 2251 Dungeon Master(BFS)
- php如何实现上一页下一页的功能 (不是列表页 是内容页)
- DFS-zb的生日
- buptoj:network
- 回归基础系列-快速排序[JAVA]
- 【BZOJ2243】[SDOI2011]染色【树链剖分】【线段树】