钱币组合题
2015-10-12 23:21
309 查看
做美团笔试,1元,5元,10元,100元组成N元,(0<=N<=10000)...不会
百度找到两篇帖子http://blog.csdn.net/v1v1wang/article/details/6872025,http://bbs.csdn.net/topics/270082525?page=2
提取出方法:
方法一:
public class MoneyTest {
//static int[] values={1,2,5,10,20,50};
static int[] values={1,5,10,50,100};
static int count=0;
public static void main(String[] args) {
split(10,0,"");
System.out.println(count);
}
public static void split(int n,int base,String result){
if(n<0) return;
if(n==0){
System.out.println(result);
count+=1;
return;
}
for(int i=base;i<values.length;i++){
split(n-values[i],i,result+values[i]+"|");
}
}
}
方法二:这种方法是最简单的,竟然忘记了,当年计算兔子和鸡的脚的题目就知道这种遍历方法,可是换成人民币竟然不会了
public class MoneyTest1 {
public static void main(String[] args) {
// 1元 5元 10元 50元 100元
int n100, n50, n10, n5, n1, count = 1;
int N = 10;// N任意改变
int max100 = N / 100;
int max50 = N / 50;
int max20 = N / 20;
int max10 = N / 10;
int max5 = N / 5;
int max1 = N;
for (n100 = 0; n100 <= max100; n100++) {
for (n50 = 0; n50 <= max50; n50++) {
for (n10 = 0; n10 <= max10; n10++) {
for (n5 = 0; n5 <= max5; n5++) {
for (n1 = 0; n1 <= max1; n1++) {
if (100 * n100 + 50 * n50 + 10 * n10 + 5 * n5 + 1
* n1 == N) {
System.out.println(count + ":" + n100 + "\t"
+ n50 + "\t" + n10 + "\t" + n5 + "\t"
+ n1 + "\t");
count++;
}
}
}
}
}
}
}
}
百度找到两篇帖子http://blog.csdn.net/v1v1wang/article/details/6872025,http://bbs.csdn.net/topics/270082525?page=2
提取出方法:
方法一:
public class MoneyTest {
//static int[] values={1,2,5,10,20,50};
static int[] values={1,5,10,50,100};
static int count=0;
public static void main(String[] args) {
split(10,0,"");
System.out.println(count);
}
public static void split(int n,int base,String result){
if(n<0) return;
if(n==0){
System.out.println(result);
count+=1;
return;
}
for(int i=base;i<values.length;i++){
split(n-values[i],i,result+values[i]+"|");
}
}
}
方法二:这种方法是最简单的,竟然忘记了,当年计算兔子和鸡的脚的题目就知道这种遍历方法,可是换成人民币竟然不会了
public class MoneyTest1 {
public static void main(String[] args) {
// 1元 5元 10元 50元 100元
int n100, n50, n10, n5, n1, count = 1;
int N = 10;// N任意改变
int max100 = N / 100;
int max50 = N / 50;
int max20 = N / 20;
int max10 = N / 10;
int max5 = N / 5;
int max1 = N;
for (n100 = 0; n100 <= max100; n100++) {
for (n50 = 0; n50 <= max50; n50++) {
for (n10 = 0; n10 <= max10; n10++) {
for (n5 = 0; n5 <= max5; n5++) {
for (n1 = 0; n1 <= max1; n1++) {
if (100 * n100 + 50 * n50 + 10 * n10 + 5 * n5 + 1
* n1 == N) {
System.out.println(count + ":" + n100 + "\t"
+ n50 + "\t" + n10 + "\t" + n5 + "\t"
+ n1 + "\t");
count++;
}
}
}
}
}
}
}
}
相关文章推荐
- 托管代码和非托管代码的区别
- 黑马程序员——简析java注解
- viewstub应用
- 2015-10-12
- 八皇后-优化冲突检测
- JavaScript权威设计--事件处理介绍(简要学习笔记十七)
- NetBeans常用快捷键
- 九九乘法表
- Hadoop内容提纲
- 解决Netbeans和Eclipse中的图片路径问题
- iOS开发-ios7下拉刷新,上提加载快速集成
- Etl之HiveSql调优(left join where的位置)
- HTML/CSS(五)margin padding border
- redis安装
- Etl之HiveSql调优(left join where的位置)
- iOS UITableView下拉刷新上拉加载更多MJRefresh类库(推荐)使用初级剑侠篇(欢迎提建议和分享遇到的问题)
- hdu5500 Reorder the Books (枚举+模拟)
- Swap Nodes in Pairs
- iOS中使用 Reachability 检测网络
- java入门第三天 switch case 运算符 小游戏准备