作者:呵呵傻乎乎宝宝 | 来源:互联网 | 2023-08-10 19:52
1,有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?2,马戏团里有个叠罗汉的表演,为了便于美观,下面的人身高和体重都要大于上面的人。现在知道n
1,有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?
2,马戏团里有个叠罗汉的表演,为了便于美观,下面的人身高和体重都要大于上面的人。现在知道n个演员的身高和体重,请问最多能叠多少层?
19 个解决方案
第二题 1+2+3+。。。+x --表示可以叠x层? 然后等差数列求和?等于n个人? 不知道对不?
第一题这样行不:
写4个循环,层层嵌套。。。。。分别对应4中面值的硬币。。。迭代变量是硬币个数,从一枚开始,迭代条件是硬币总面值小于n。
吧所有可能组合穷举出来。。。。。。。。。。。。。。。。。。。。。。。
第一个题 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);
}
}
忘了打印。 在main方法里最后打印下TreeSet数组长度就可以了
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楼的代码改进了一下,不知道还有没有更高效的,可以分享下。
第二题有空再写了,有点晚了,先睡了
不好意思,看错了6楼的代码,我上面和6楼的一样,心想的那个方法是代码复用的,今晚上还未实现。
抱歉了