2017百度实习生招聘笔试真题编程题集合

1,买帽子

AC代码如下:

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class BD001 {

	/*买帽子
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			String s=sc.nextLine();
			String str=sc.nextLine();
			String []arr=str.split(" ");
			int []arrInt=new int[arr.length];
			Set<Integer> set=new TreeSet();
			set=new HashSet();
			for(int i=0;i<arr.length;i++){
				arrInt[i]=Integer.parseInt(arr[i]);
				set.add(arrInt[i]);
			}
			if(set.size()<3){
				System.out.println("-1");
			}else{
				int count=0;
				for(Integer i:set){
					count++;
					if(count==3){
					System.out.println(i);
					break;
					}
				}
			}
		}

	}

}


2,度度熊回家

AC代码如下:

 

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class BD002 {

	/*度度熊回家
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			String s=sc.nextLine();
			String str=sc.nextLine();
			String []arr=str.split(" ");
			List<Integer> list=new ArrayList();
			int min=Integer.MAX_VALUE;
			for(int i=0;i<arr.length;i++)
				list.add(Integer.parseInt(arr[i]));
			for(int i=1;i<list.size()-1;i++){
				int temp=list.remove(i);
				int result=fun(list);
				min=min>result?result:min;
				list.add(i, temp);
			}
			System.out.println(min);
		}

	}
	public static int fun(List<Integer> list){
		int distance=0;
		for(int i=1;i<list.size();i++){
			distance+=Math.abs(list.get(i)-list.get(i-1));
		}
		return distance;
	}

}


3,寻找三角形

AC代码如下:

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test003 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			int N=sc.nextInt();
			sc.nextLine();
			String []p=new String[N];
			for(int i=0;i<N;i++){
				p[i]=sc.nextLine();
			}
			Point[] a=new Point[N];
			for(int i=0;i<N;i++){
				String []temp=p[i].split(" ");
				a[i]=new Point(temp[0], Integer.parseInt(temp[1]), Integer.parseInt(temp[2]), Integer.parseInt(temp[3]));
			}
			List<Point> list=new ArrayList();
			List<List<Point>> result=new ArrayList();
			backTracking(a, 0, 3, list, result);
			List<List<Point>> readList=new ArrayList();
			double max=0.0;
			for(int i=0;i<result.size();i++){
				List<Point> temp1=result.get(i);
				if(temp1.get(0).c.equals(temp1.get(1).c)&&temp1.get(0).c.equals(temp1.get(2).c)||(!temp1.get(0).c.equals(temp1.get(1).c)&&(!temp1.get(0).c.equals(temp1.get(2).c))&&(!temp1.get(1).c.equals(temp1.get(2).c)))){
					readList.add(temp1);
				}
			}
			for(int i=0;i<readList.size();i++){
				List<Point> temp=readList.get(i);
				double area=getArea(temp);
				if(area>max){
					max=area;
				}
			}
			DecimalFormat f=new DecimalFormat("0.00000");
			String format=f.format(max);
			System.out.println(format);

			
		}
		

	}
	
	public static double getArea(List<Point> list){
		Point a=list.get(0);
		Point b=list.get(1);
		Point c=list.get(2);
		double disab=Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z));
		double disbc=Math.sqrt((b.x-c.x)*(b.x-c.x)+(b.y-c.y)*(b.y-c.y)+(b.z-c.z)*(b.z-c.z));

		double disac=Math.sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)+(a.z-c.z)*(a.z-c.z));
		double s=0.5*(disab+disbc+disac);
		double area=Math.sqrt(s*(s-disab)*(s-disbc)*(s-disac));
		return area;

	}
	public static void backTracking(Point []a,int start,int k, List<Point> tempList,List<List<Point>> result){

		if(k<0)
			return;
		else if(k==0){
			result.add(new ArrayList<Point>(tempList));
		}else{
			for(int i=start;i<a.length;i++){
				tempList.add(a[i]);
				backTracking(a, i+1, k-1, tempList, result);
				tempList.remove(tempList.size()-1);
			}
		}
	}
	

}
class Point{
	public String c;
	public int x;
	public int y;
	public int z;
	public Point(String c,int x,int y,int z){
		this.c=c;
		this.x=x;
		this.y=y;
		this.z=z;
	}
}


4,有趣的排序

AC代码如下:

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

public class BD004 {
	public static void main(String[] args) {
	    Scanner sc=new Scanner(System.in);
	    while(sc.hasNext()){
	    	String s1=sc.nextLine();
	    	String s2=sc.nextLine();
	    	String []arrS=s2.split(" ");
	    	int []arr=new int[arrS.length];
	    	int []result=new int[arr.length];
	    	for(int i=0;i<arrS.length;i++){
	    		arr[i]=Integer.parseInt(arrS[i]);
	    		result[i]=arr[i];
	    	}
	    	Arrays.sort(result);
	    	int count=0;
	    	for(int i=0;i<result.length;i++){
	    		if(arr[i]==result[count])
	    			count++;
	    	}
	    	System.out.println(result.length-count);
	    }

	}
	

}


5,不等式数列

AC代码如下:

import java.util.Scanner;

public class BD005 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			String s=sc.nextLine();
			String []arr=s.split(" ");
			int n=Integer.parseInt(arr[0]);
			int k=Integer.parseInt(arr[1]);
			int [][]dp=new int[n+1][n+1];
			for(int i=1;i<=n;i++){
				dp[i][0]=1;
				dp[i][i-1]=1;
			}
			for(int i=2;i<n+1;i++){
				for(int j=1;j<=k&&j<i;j++){
					dp[i][j]=(dp[i-1][j]+dp[i-1][j-1]+dp[i-1][j]*j+dp[i-1][j-1]*(i-j-1))%2017;
				}
			}
			System.out.println(dp[n][k]);
		}

	}

}


 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Narasimha_Karumanchi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值