9月19号蘑菇街笔试

前面的选择题不说了,对于我这个linux都不会的人来说简直乱蒙。比较有把握的后面三道写程序的题目。
第一题:n个班每个班ai个人,容量为m的 大巴,每个班要么上,要么不上,至少需要多少辆大巴
一开始看成了01背包 最多上几个 ,后来反应过来的,就一个贪心,先排序然后能上就上。
input:n m
ai
output:至少几辆

input:4 3 
2 3 2 1
output:3
class Load{
public static void main(String[] args) {
int n,m,x;
List<Integer> list = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
n=sc.nextInt();
         m=sc.nextInt();
        for (int i=0; i<n; i++){
         x = sc.nextInt();
list.add(x);
         }
        Collections.sort(list);
        Collections.reverse(list);
int count = 0,len = 1;;
int[] a = new int[10000];
  for (int i=0; i<n; i++)
  a[i] = 0;
for (Integer each: list) {
int j = 1;
while (a[j]+each>m)
j++;
a[j] = a[j] + each;
if (j>len)
len = j;
}
System.out.print(len);
}
}  

第二题:给一个圆的圆心半径,可以移动,移动方式:要求绕圆上任意一点旋转。给定目标圆心位置,求最少移动次数
一个数学题,每次移动圆心到达的点就是以两倍半径画个圆得到的轨迹上的任意点。问题转化求出原始和目的圆心的距离d,需要多少个两倍半径r才能够到底 d的长度

input:r x1 y1 x2 y2
output:至少几次
input :2 0 0 0 4
output:1

class Move{
    public static void main(String args[]){
        int x1,x2,y1,y2,r;
        double dis;
        Scanner sc = new Scanner(System.in);
        r=sc.nextInt();
            x1=sc.nextInt();
            y1=sc.nextInt();
            x2=sc.nextInt();
            y2=sc.nextInt();
            dis = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
            if (Math.abs(dis - 0.00) <0.00001)
            System.out.println(0);
            else{
            int i = 1,d = r*2; 
            while (d<dis)
            {
            d = d+2*r;
            i++;
            }
            System.out.println(i);
            }
        }

第三题,给定一个字符串,判断插入一个字符是否能是原来的字符成为回文

看到数据规模len<=10:我就想到这是 道暴力搜索

代码太丑不贴了

感觉自己老了,切不动题了。 蘑菇街的题目不难,但还是有点水准的。至少比某为好多了。 
全部评论
我在笔试 室友在背后lol开黑 也是哭瞎了
点赞 回复 分享
发布于 2015-09-19 21:17
我做的笔试题超简单, 载客问题, 投篮问题, 删除一个数之后的最大间隔问题, 是不是很简单?
点赞 回复 分享
发布于 2015-09-20 23:40
import java.util.Scanner; public class MainMogujie { public static int resoult(char[] data1,int every){ int body=0; for(char a='a';a<='z';a++){ char[] temp=new char[data1.length+1]; for(int j=0;j<=data1.length;j++){ if(j<every){ temp[j]=data1[j]; }else if(j==every){ temp[j]=a; }else{ temp[j]=data1[j-1]; } } boolean res=false; for(int k=0;k<temp.length/2;k++){ if(temp[k]!=temp[temp.length-1-k]){ res=true; break; } } if(!res){ body++; } } return body; } public static void main(String[] args) { // TODO Auto-generated method stub int sum=0; Scanner input=new Scanner(System.in); char[] data=input.nextLine().toCharArray(); for(int i=0;i<=data.length;i++){ sum=sum+resoult(data,i); } if(sum>0){ System.out.println("YES"); }else{ System.out.println("No"); } } }
点赞 回复 分享
发布于 2015-09-20 09:25
求第三道回文的C++实现代码
点赞 回复 分享
发布于 2015-09-20 00:26
我刚把基础题做了之后就再也连不上服务器了,知道八点半,蛋疼!!
点赞 回复 分享
发布于 2015-09-19 22:39
import java.util.Scanner; public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int nClassCount = sc.nextInt(); int maxCount = sc.nextInt(); int []arr = new int[nClassCount]; for (int i = 0; i < nClassCount; i++) { arr[i] = sc.nextInt(); } int count = 1; int sum = 0; for (int i = 0; i < nClassCount; i++) { sum += arr[i]; if (sum <= maxCount) { continue; }else{ sum = arr[i]; count++; } } System.out.println(count); } }
点赞 回复 分享
发布于 2015-09-19 22:33
******的。
点赞 回复 分享
发布于 2015-09-19 22:32
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n = sc.nextInt(); int classes[] = new int[m]; int remain = n; int needCarNums = 1; for (int i = 0; i < m; i++) { classes[i] = sc.nextInt(); if (classes[i] > remain) { remain = n; needCarNums++; } remain -= classes[i]; } System.out.println(needCarNums); } }
点赞 回复 分享
发布于 2015-09-19 21:50
真速度,刚考完就出代码。。。
点赞 回复 分享
发布于 2015-09-19 21:15

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 14:45
bg是二本双一流硕,目标是Java后端开发岗,投暑期实习0大厂面试,只有极少的大厂测开,可能投的晚加上简历太烂加上0实习?求大佬们给个建议
程序员小白条:别去小厂,初创或者外包,尽量去中小,100-499和500-999,专门做互联网产品的,有公司自研的平台和封装的工具等等,去学习一些业务相关的,比如抽奖,积分兑换,SSO认证,风控,零售等等,目标 Java 后端开发吗?你要不考虑直接走大厂测开?如果技术不行的话,有面试你也很难过的
实习,不懂就问
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务