N中类型每种M样--不同的钱数--牌型种数--抽签

一共有4张2元,3张3元,2张5元,一共能凑出多少种不同的钱数,不包括0元,并且三张2元和2张3元钱数一样。


import java.util.HashSet;

public class 不同的钱数 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HashSet<Integer> hashSet = new HashSet<>();
		int a[] = {4,3,2};
		for (a[0] = 0; a[0] < 5; a[0]++) {
			for (a[1] = 0; a[1] < 4; a[1]++) {
				for (a[2] = 0; a[2] < 3; a[2]++) {
					if (a[0]==0&&a[1]==0&&a[2]==0) {
						continue;//不包括0元
					}
					int money = a[0]*2+a[1]*3+a[2]*5;
					if (!hashSet.contains(money)) {//用hashset的判断重复功能;
						hashSet.add(money);
					}
				}
			}
		}
		System.out.println(hashSet.size());
	}
}


类比于 蓝桥杯的 牌型种数-- 13种牌, 边界条件,手上拿完13张牌同时遍历完13张牌;有多少可能?

这道题 三种钱,遍历完3种钱,有多少可能?


import java.util.HashSet;

public class 不同的钱数2 {

	static int a[][]= {{4,2},{3,3},{2,5}};
	static HashSet<Integer>  hashSet = new HashSet<>();
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		dfs(0,0);
		System.out.println(hashSet.size());
	}

	private static void dfs(int num,int summoney) {
		// TODO Auto-generated method stub
		if (num==3) {
			if (summoney==0) {
				return;
			}
			if (!hashSet.contains(summoney)) {
				hashSet.add(summoney);
			}
			return;
		}
		
		for (int i = 0; i <= a[num][0]; i++) {
			summoney += a[num][1]*i;
			num++;
			dfs(num, summoney);
			num--;
			summoney -= a[num][1]*i;
		}
	}
}


题目二:

蓝桥杯--抽签

X星球要派出一个5人组成的观察团前往W星。
其中:{4,2,2,1,1,3};
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。
....

那么最终派往W星的观察团会有多少种国别的不同组合呢?

public class 抽签 {

	private static int count;
	static int a[] = {4,2,2,1,1,3};
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		dfs(0,5);
		System.out.println(count);
	}

	private static void dfs(int num, int peoplenum) {
		// TODO Auto-generated method stub
		if (num==6) {
			if (peoplenum==0) {
				count++;
			}
			return;
		}
		
		for (int i = 0; i <= a[num]; i++) {
			if (peoplenum-i<0) {
				continue;
			}
			peoplenum -= i;
			num++;
			dfs(num, peoplenum);
			num--;
			peoplenum += i;
		}
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obession

觉得有用可以打赏咖啡一杯~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值