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-19 21:15
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 22:32
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:39
求第三道回文的C++实现代码
点赞 回复 分享
发布于 2015-09-20 00:26
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
我做的笔试题超简单, 载客问题, 投篮问题, 删除一个数之后的最大间隔问题, 是不是很简单?
点赞 回复 分享
发布于 2015-09-20 23:40

相关推荐

有没有经济学家能告诉我,三年后中国的就业市场会不会好转?我在校招中拿到了一份9k+的offer,还是行业的龙头企业,心里其实不想再考研了。但又总是担心,万一读研后薪资更高,我会不会后悔呢?
Fyhyuky:三年后肯定不会啊,只会比现在更烂,你自己看看现在有没有什么增长点,电车都是国家补贴兜底才发展出来的,已经比较违背市场自然规律了,互联网更不用说了,国家强力打压,传统制造业转型失败,现在苟延残喘中
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务