百度笔试编程题
投的是 安卓,选择题有些方啊,出的是 计算机组成原理 ,arm体系 x86架构 ,mmp
编程题 一般般
第二个 爬山,用递归
import java.awt.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main1 {
//记录所有走过的结点
public static ArrayList<Integer> list=new ArrayList<>();
public static void main(String[] args) {
System.out.println("Hello World");
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
int x=scanner.nextInt();
int y=scanner.nextInt();
int a[][]=new int[n][m];
for (int i = 0; i <n; i++) {
for(int j=0;j<m;j++) {
a[i][j]=scanner.nextInt();
}
}
scanner.close();
list.add(a[x-1][y-1]);
countWays(a,n,m,x-1,y-1);
//对所有走过的结点进行排序,取得最大值输出
Collections.sort(list);
System.out.println(list.get(list.size()-1));
}
private static void countWays(int[][] a, int n, int m, int x, int y) {
//判断结点是否符合条件
int l1,l2,l3,l4;
l1=x+1;
l2=x-1;
l3=y+1;
l4=y-1;
//若结点符合条件 则将节点的值加入集合,并递归该节点
if(l3>0&&l3<m) {
if(a[x][l3]>a[x][y]) {
list.add(a[x][l3]);
countWays(a, n, m, x, l3);
}
}
if(l4>0&&l4<m) {
if(a[x][l4]>a[x][y]) {
list.add(a[x][l4]);
countWays(a, n, m, x, l4);
}
}
if(l1>0&&l1<n) {
if(a[l1][y]>a[x][y]) {
list.add(a[l1][y]);
countWays(a, n, m, l1, y);
}
}
if(l2>0&&l2<n) {
if(a[l2][y]>a[x][y]) {
list.add(a[l2][y]);
countWays(a, n, m, l2, y);
}
}
}
}
第三个 ,阴阳师合成 ,x个x星,合成一个x+1星
用动态规划或者递归,
递归代码
public class Main {
public static void main(String[] args) {
System.out.println("hello world");
//输入
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.close();
n=countWays(n);
System.out.println(n);
}
private static int countWays(int n) {
if(n==2) return 1;
else return n*countWays(n-1);
}
}
public static void main(String[] args) {
System.out.println("hello world");
//输入
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.close();
n=countWays(n);
System.out.println(n);
}
private static int countWays(int n) {
if(n==2) return 1;
else return n*countWays(n-1);
}
}
动态规划实现
import java.util.Scanner;
public class Main3 {
public static void main(String[] args) {
System.out.println("hello world");
//输入
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.close();
int a[]=new int[n+1];
a[2]=1;
for(int i=3;i<n+1;i++) {
a[i]=a[i-1]*i;
}
System.out.println(a[n]);
}
}
public class Main3 {
public static void main(String[] args) {
System.out.println("hello world");
//输入
Scanner in=new Scanner(System.in);
int n=in.nextInt();
in.close();
int a[]=new int[n+1];
a[2]=1;
for(int i=3;i<n+1;i++) {
a[i]=a[i-1]*i;
}
System.out.println(a[n]);
}
}
一直卡在80%, 结果超出int 界限了,,想了想 用BigInteger。
第一题有大佬做出来吗?