【蓝桥杯2015JavaB】牌型种数、饮料换购、

牌型种数

小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
请填写该整数,不要填写任何多余的内容或说明文字。

这题的主要在于递归的调用,k代表的是哪一种牌,可以选择0~4张,如果最后的牌总数大于13,不符合要求,直接return,如果牌的总数为13符合题目的要求,就让ans++,最后得到的ans就是最终答案。

public class A07_牌型种数 {
    
    
 
	private static int ans;
 
	public static void main(String[] args) {
    
    
		f(0, 0);
		System.out.println(ans);
	}
 
	// 13堆牌, 每堆4个, 每堆可选0~4个, 只要牌的总数为13即可
	// k: 哪种牌;   cnt: 总共分配了几张牌
	private static void f(int k, int cnt) {
    
    
		if (k > 13 || cnt > 13)
			return;
		if (cnt == 13) {
    
    
			ans++;
			return;
		}
		// cnt:每一种牌出现的次数, cnt逐步上升
		// cnt==13, 牌型种数+1, 返回
		for (int i = 0; i < 5; i++) {
    
    
			f(k + 1, cnt + i);
		}
	}
 
}

饮料换购

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料。
输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
输出:一个整数,表示实际得到的饮料数
例如:
用户输入:
100
程序应该输出:
149
用户输入:
101
程序应该输出:
151
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

题目非常简单

 
import java.util.Scanner;
 
public class A08_饮料换购 {
    
     // 模拟
 
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int ans = 0;
		while (n >= 3) {
    
    
			n -= 2;
			ans += 3;
		}
		ans += n;
		System.out.println(ans);
	}
 
}

猜你喜欢

转载自blog.csdn.net/VanGotoBilibili/article/details/115416338