2017华为实习机试题(java)
来源:互联网 发布:免费服务器防火墙软件 编辑:程序博客网 时间:2024/06/05 16:05
题目1:
编写一个reverseadd函数,实现两个数倒置后再求和的功能,比如输入123,456就是求321+654,输出975
注意输入100,200输出3,(自动去除开头的0),超过范围输出-1
思路:
输入数据带空格,先切割出整数,然后用stringbuidler翻转,转成数字自动去除0,求和,全程自带的函数.
import java.util.Scanner;public class reverseadd { public static int reversedAdd(int a,int b){ if ((a<1)||(a>700000)||(b<1)||(b>700000)) return -1; String A=Integer.toString(a); String B=Integer.toString(b); StringBuilder c=new StringBuilder(A); StringBuilder d=new StringBuilder(B); c=c.reverse(); d=d.reverse(); int e=Integer.valueOf(c.toString()); int f=Integer.valueOf(d.toString()); return e+f; } public static void main(String[] args) {Scanner cin=new Scanner(System.in);while(cin.hasNext()){String s=cin.next();String c[]=s.split(",");//System.out.println(c[0]);System.out.println(reversedAdd(Integer.valueOf(c[0]),Integer.valueOf(c[1])));}cin.close();}}
题目2:
掷骰子,初始序列1,2,3,4,5,6分别代表左,右,前,后,上,下
输入翻转序列,保证只包含L,R,F,B,A,C
L:向左翻转
R:向右翻转
F:向前翻转
B:向后翻转
A:逆时针翻转
C:顺时针翻转
输出最终序列
比如
输入
LA
输出
435621
思路直接开数组模拟,只需要模拟前,左,顺时针三个状态,其他的由这些翻转3次得到.
import java.util.Scanner;public class 掷骰子 {private static int state[]={1,2,3,4,5,6};public static void left(){//向左旋转 int temp1=state[0]; int temp2=state[1]; state[0]=state[4]; state[1]=state[5]; state[4]=temp2; state[5]=temp1;}public static void right(){//向右旋转int temp1=state[0];int temp2=state[1];state[0]=state[5];state[1]=state[4];state[4]=temp1;state[5]=temp2; }public static void f(){//向前翻转int temp1=state[2];int temp2=state[3];state[2]=state[4];state[3]=state[5];state[5]=temp1;state[4]=temp2;}public static void c(){//顺时针旋转int temp1=state[0];int temp2=state[1];state[0]=state[2];state[1]=state[3];state[2]=temp2;state[3]=temp1;}public static void cal(char s[]){for (int i=0;i<s.length;i++){if (s[i]=='L'){left();}if (s[i]=='R'){right();}if (s[i]=='F'){f();}if (s[i]=='B'){f();f();f();}if (s[i]=='A'){c();c();c();}if (s[i]=='C'){c();}}} public static void main(String[] args) {Scanner cin=new Scanner(System.in);while(cin.hasNext()){state[0]=1;state[1]=2;state[2]=3;state[3]=4;state[4]=5;state[5]=6;String s=cin.next();char c[]=s.toCharArray();cal(c);for (int i=0;i<6;i++)System.out.print(state[i]);System.out.println();}cin.close();}}
题目3:
当出差遇上大雾
给定距离矩阵,大雾城市(既不能到达,也不能离开),目的地,输出最短路径和路径.
迪杰斯特拉结合path数组记录路径,path在迪杰斯特拉更新dis距离数组时更新.
大雾城市就是将距离矩阵变为1000
无法到达输出-1
import java.util.Scanner;public class 当出差遇上大雾 { private static int [][]s=new int[6][6]; public static void init(){ s[0][0]=0; s[0][1]=2; s[0][2]=10; s[0][3]=5; s[0][4]=3; s[0][5]=1000; s[1][0]=1000; s[1][1]=0; s[1][2]=12; s[1][3]=1000; s[1][4]=1000; s[1][5]=10; s[2][0]=1000; s[2][1]=1000; s[2][2]=0; s[2][3]=1000; s[2][4]=7; s[2][5]=1000; s[3][0]=2; s[3][1]=1000; s[3][2]=1000; s[3][3]=0; s[3][4]=2; s[3][5]=1000; s[4][0]=4; s[4][1]=1000; s[4][2]=1000; s[4][3]=1; s[4][4]=0; s[4][5]=1000; s[5][0]=3; s[5][1]=1000; s[5][2]=1; s[5][3]=1000; s[5][4]=2; s[5][5]=0; } public static void main(String[] args) {Scanner cin=new Scanner(System.in);while(cin.hasNextInt()){ init();int end=cin.nextInt();//终点城市int a=cin.nextInt();//大雾城市if (a!=0){//处理距离矩阵 for (int i=0;i<6;i++) s[i][a-1]=1000; for (int i=0;i<6;i++) s[a-1][i]=1000;}int dis[]=new int[6];for (int i=0;i<6;i++)dis[i]=s[0][i];int book[]=new int[6];book[0]=1;int k=-1;int path[]=new int[6];path[0]=-1;for (int i=1;i<6;i++)if (dis[i]==1000)path[i]=-1;elsepath[i]=0;for (int i=0;i<5;i++){int min=1000;for (int j=0;j<6;j++){if ((book[j]==0)&&min>dis[j]&&dis[j]!=1000){min=dis[j];k=j;}} book[k]=1; if (k!=-1){for (int j=0;j<6;j++)if (dis[j]>dis[k]+s[k][j]){dis[j]=dis[k]+s[k][j];path[j]=k;}}}if (dis[end-1]==1000){System.out.println(1000); System.out.println("[]"); continue;}else{System.out.println(dis[end-1]);k=end-1;int temp[]=new int[6];int num=0; while(k!=-1){ temp[num++]=k; k=path[k]; } System.out.print("["); for (int i=num-1;i>=1;i--)System.out.print(temp[i]+1+" "); System.out.print(temp[0]+1+"]"); System.out.println();}}cin.close();}}
3 0
- 2017华为实习机试题(java)
- 华为2016实习机试题
- 2017华为实习生机试题--任务调度
- 华为2016暑假实习机试题
- 华为Java机试题
- 华为Java机试题
- 华为14实习面试题
- 华为java机试题整理(二)
- 华为机试题: 约瑟夫问题(Java)
- (java)华为机试题:字符串变换
- 华为机试题Java解
- 2017年实习生面试题(Java研发工程师)
- 华为机试题(2017/04/01)
- 华为java华为面试题
- 华为的JAVA面试题及答案(部分)2017
- Java求子串出现次数(华为机试题)
- 华为机试题(替换字符串)——Java解法
- 2015届华为校园招聘机试题 (java实现)
- 分享一些常见的浏览器兼容性问题
- Android 属性动画的使用
- 【OpenCV】查找表用法以及LUT函数的使用
- AndroidStudio 插件
- Android的开机流程及对应源码位置分析
- 2017华为实习机试题(java)
- QuartusII9.0的安装与破解
- Intersection of Two Linked Lists问题及解法
- Hadoop实战
- 麦子学院最新Python教程
- 九度OJ 1043 Day of Week
- ffmpeg 工具 参数详细解析
- 1003. Emergency (25)
- springmvc中@ModelAttribute注解