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

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务