创新工场笔试题 帮忙详解

yangxuxinzzzz 2012-10-04 12:18:51
1,有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?

2,马戏团里有个叠罗汉的表演,为了便于美观,下面的人身高和体重都要大于上面的人。现在知道n个演员的身高和体重,请问最多能叠多少层?
...全文
423 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落夏天 2012-10-06
  • 打赏
  • 举报
回复
import java.util.Scanner;

//有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?
public class Test {
public static void main(String[] args) {
int x1,x2,x5,x10;//分别定义1,2,5,10分钱的数量
int sum=0;
Scanner input = new Scanner(System.in);
int n=input.nextInt();//接收输入的n
for(x10=0;x10<=n/10;x10++){
for(x5=0;x5<=(n-x10*10)/5;x5++){
for(x2=0;x2<=(n-x10*10-x5*5)/2;x2++){
for(x1=0;x1<=(n-x10*10-x5*5-x2*2);x1++){
if((x1+2*x2+5*x5+10*x10)==n){
sum++;
}
}
}
}
}
System.out.println("组合共有"+sum+"种");
}
}
第一题把6楼的代码改进了一下,不知道还有没有更高效的,可以分享下。
第二题有空再写了,有点晚了,先睡了
conolan 2012-10-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
引用 10 楼 的回复:
代码在这里
package practice;

import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Test {
public static void main(Str……
[/Quote]

这个问题哪个大神来解决啊
学习一下。。
失落夏天 2012-10-06
  • 打赏
  • 举报
回复
不好意思,看错了6楼的代码,我上面和6楼的一样,心想的那个方法是代码复用的,今晚上还未实现。
抱歉了
a363722188 2012-10-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhaoming262350 的回复:]

第一个题 for()循环嵌套
import java.util.Scanner;
public class Coin
{
public static void main(String [] args)
{
int sum=0;
System.out.println("Input a number is n:"); //输入一个n的值
Scanner input = new ……
[/Quote]

哥们,你很厉害哈。学习啦。代码已测正确。
zly361814478 2012-10-05
  • 打赏
  • 举报
回复
恩,代码有点问题,这个得再考虑考虑[Quote=引用 14 楼 的回复:]

引用 10 楼 的回复:
代码在这里
package practice;

import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Test {
public static void main(S……
[/Quote]
失落夏天 2012-10-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
代码在这里
package practice;

import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Test {
public static void main(String[] args) {……
[/Quote]
这样举一个例子
身高 体重
A: 200 200
B: 100 150
C: 150 100
D: 110 50
E: 80 30
如果按照ACDE的顺序可以添加4层,如果按照ABE的顺序只能添加三层。
而你的遍历的顺序是先后,也就说第一个添加之后,第二个数据应该是先添加B,也就是错误的数据。
我觉得出题的人应该就是想考是不是考虑到这一层,第一层的出题点我还没想出来,我感觉应该不是简单的FOR循环那么简单,暂时猜测是不是考的是算法的运算时间。
lulujiajiawenwen 2012-10-04
  • 打赏
  • 举报
回复
第一题可以用枚举的数据
zly361814478 2012-10-04
  • 打赏
  • 举报
回复
忘了打印。 在main方法里最后打印下TreeSet数组长度就可以了
zly361814478 2012-10-04
  • 打赏
  • 举报
回复
代码在这里
package practice;

import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Test {
public static void main(String[] args) {
Set<Person> set = new TreeSet<Person>(new Mycomparator());

Person p1 = new Person(18.1,57.5);
Person p2 = new Person(17.2,56.4);
Person p3 = new Person(18.3,45.5);
Person p4 = new Person(16.5,80.5);
Person p5 = new Person(19.3,60.5);
Person p6 = new Person(19.2,56.0);
set.add(p1);
set.add(p2);
set.add(p3);
set.add(p4);
set.add(p5);
set.add(p6);
for(Iterator ite =set.iterator();ite.hasNext();){
Person p = (Person)ite.next();
System.out.println(p.getHeight());
}

}



}

class Person
{
private double height;
private double weight;
public Person(double height,double weight){
this.height=height;
this.weight=weight;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
}
// 自定义的比较器
class Mycomparator implements Comparator{


public int compare(Object o1,Object o2) {
Person p1 =(Person)o1;
Person p2 =(Person)o2;
// 比较只能体重和身高都占优势的时候才能加进去
if(p1.getHeight()>p2.getHeight()&&p1.getWeight()>p2.getWeight()){
return 1;
}else if(p1.getHeight()<p2.getHeight()&&p1.getWeight()<p2.getWeight()){
return 1;
}
return 0;
}

}随便找了几个进去测的 有不对之处 请指教。
yangxuxinzzzz 2012-10-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
按照这个来就可以 楼主要代码么???引用 5 楼 的回复:

第一题么。。。

写个类,代表杂技演员,然后这个类有俩属性,身高和体重,然后实现comparable接口,比较逻辑就是“下面的人身高和体重都要大于上面的人”。

然后把这些对象都放进一个TreeSet,最后TreeSet中元素个数就是最高能叠多少层。。。。
[/Quote]
贴代码!!!!!!
zyczy1314 2012-10-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
按照这个来就可以 楼主要代码么???

引用 5 楼 的回复:

第一题么。。。

写个类,代表杂技演员,然后这个类有俩属性,身高和体重,然后实现comparable接口,比较逻辑就是“下面的人身高和体重都要大于上面的人”。

然后把这些对象都放进一个TreeSet,最后TreeSet中元素个数就是最高能叠多少层。。。。
[/Quote]

贴代码
zly361814478 2012-10-04
  • 打赏
  • 举报
回复

按照这个来就可以 楼主要代码么???[Quote=引用 5 楼 的回复:]

第一题么。。。

写个类,代表杂技演员,然后这个类有俩属性,身高和体重,然后实现comparable接口,比较逻辑就是“下面的人身高和体重都要大于上面的人”。

然后把这些对象都放进一个TreeSet,最后TreeSet中元素个数就是最高能叠多少层。。。。
[/Quote]
zhaoming262350 2012-10-04
  • 打赏
  • 举报
回复
第一个题 for()循环嵌套
import java.util.Scanner;
public class Coin
{
public static void main(String [] args)
{
int sum=0;
System.out.println("Input a number is n:"); //输入一个n的值
Scanner input = new Scanner(System.in);
int n=input.nextInt();
for(int i=0;i<=n/10;i++) // 10 分 的个数
for(int j=0;j<=(n-10*i)/5;j++) //5分 的个数
for(int m=0;m<=(n-10*i-5*j)/2;m++) // 2 分的个数
for(int t=0;t<=n-10*i-5*j-2*m;t++) // 1分的个数
if(10*i+5*j+2*m+t==n) // 判断是不是 相等
sum++;
System.out.println(sum);
}
}
结贴是美德 2012-10-04
  • 打赏
  • 举报
回复
第一题么。。。

写个类,代表杂技演员,然后这个类有俩属性,身高和体重,然后实现comparable接口,比较逻辑就是“下面的人身高和体重都要大于上面的人”。

然后把这些对象都放进一个TreeSet,最后TreeSet中元素个数就是最高能叠多少层。。。。
结贴是美德 2012-10-04
  • 打赏
  • 举报
回复
第一题这样行不:

写4个循环,层层嵌套。。。。。分别对应4中面值的硬币。。。迭代变量是硬币个数,从一枚开始,迭代条件是硬币总面值小于n。

吧所有可能组合穷举出来。。。。。。。。。。。。。。。。。。。。。。。

a363722188 2012-10-04
  • 打赏
  • 举报
回复
第二题 1+2+3+。。。+x --表示可以叠x层? 然后等差数列求和?等于n个人? 不知道对不?
a363722188 2012-10-04
  • 打赏
  • 举报
回复
靠,蛋疼的算法题目。。。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧