第七届蓝桥杯JAVA语言B组_抽签
来源:互联网 发布:c语言从看懂到看开 编辑:程序博客网 时间:2024/05/16 23:37
题目:抽签
X星球要派出一个5人组成的观察团前往W星。
其中:
A国最多可以派出4人。
B国最多可以派出2人。
C国最多可以派出2人。
....
那么最终派往W星的观察团会有多少种国别的不同组合呢?
下面的程序解决了这个问题。
数组a[] 中既是每个国家可以派出的最多的名额。
程序执行结果为:
DEFFF
CEFFF
CDFFF
CDEFF
CCFFF
CCEFF
CCDFF
CCDEF
BEFFF
BDFFF
BDEFF
BCFFF
BCEFF
BCDFF
BCDEF
....
(以下省略,总共101行)
public class A{public static void f(int[] a, int k, int n, String s){if(k==a.length){ if(n==0) System.out.println(s);return;}String s2 = s;for(int i=0; i<=a[k]; i++){_____________________________; //填空位置//答案为f(a,k+1,n-i,s2);s2 += (char)(k+'A');}}public static void main(String[] args){int[] a = {4,2,2,1,1,3};f(a,0,5,"");}}
解析:本体需要考虑递归,一般情况下档f()方法不为void,且刚开始是if判断,可以考虑下是否是递归
首先是判断递归的内容递归f(a,0,5,"")a表示数组,""表示要输出的字符,然后判断0和5,在
if(k==a.length){
if(n==0) System.out.println(s);
return;
}
中看出,当k==a.length表示当k的值检验到最后一个公司的时候结束,所以k表示检验到公司的个数,第k公司为为数组的a[k-1],所以a.length表示没公司了
然后n==0,输出。n表示没分配的人数则在空处输入f(a,k+1;n-i;s2);
if(k==a.length){
if(n==0) System.out.println(s);
return;
}
中看出,当k==a.length表示当k的值检验到最后一个公司的时候结束,所以k表示检验到公司的个数,第k公司为为数组的a[k-1],所以a.length表示没公司了
然后n==0,输出。n表示没分配的人数则在空处输入f(a,k+1;n-i;s2);
其中a表示数组,k+1表示要到下一个公司,n-i表示这个公司用了i个名额,还有n-i个名额,
s2为存入的数组,当然,这个是s还是s2可以挨个判断(仅有这两个数组)
解释一下for循环,循环当前国家(a[k])的情况,并用s2存下来,然后k+1递归进入下一个国家(索引值),n-i 表示还需要派遣的人数,s2表示存储的当前情况。
当有时判断不准某个参数,还不知道是的时候可以进行一个简单的循环即走一遍,把a数组改为{6,6}
然后走一遍
f(a,0,5,"")
判断不等
s2=s
i=0 ..
i=1 ..
i=2 ..
i=3 ..
i=4 ..
i=5 ..
i=6 ..
考虑一个最最简单的i=5;
f(a,x,x,x);然后把自己推断出来的可能答案填里面进行走,判断哪个逻辑错误,再单独修改,可以快速判断
但如果判断对了每个值得情况则不需要
s2为存入的数组,当然,这个是s还是s2可以挨个判断(仅有这两个数组)
解释一下for循环,循环当前国家(a[k])的情况,并用s2存下来,然后k+1递归进入下一个国家(索引值),n-i 表示还需要派遣的人数,s2表示存储的当前情况。
当有时判断不准某个参数,还不知道是的时候可以进行一个简单的循环即走一遍,把a数组改为{6,6}
然后走一遍
f(a,0,5,"")
判断不等
s2=s
i=0 ..
i=1 ..
i=2 ..
i=3 ..
i=4 ..
i=5 ..
i=6 ..
考虑一个最最简单的i=5;
f(a,x,x,x);然后把自己推断出来的可能答案填里面进行走,判断哪个逻辑错误,再单独修改,可以快速判断
但如果判断对了每个值得情况则不需要
0 0
- 第七届蓝桥杯JAVA语言B组_抽签
- 第七届蓝桥杯b组第五题-抽签
- 第七届蓝桥杯JAVA语言B组_煤球数目
- 第七届蓝桥杯JAVA语言B组_生日蜡烛
- 第七届蓝桥杯JAVA语言B组_凑算式
- 第七届蓝桥杯JAVA语言B组_分小组
- 2016第七届蓝桥杯C/C++ B组省赛第五题:抽签
- 第七届蓝桥杯 省赛 JavaB组 抽签
- 第七届蓝桥杯JAVAb组第五题抽签
- 第七届蓝桥杯抽签
- 第七届蓝桥杯Java语言B组真题(省赛)
- 第七届蓝桥杯决赛 C语言B组 题解 第五题_广场舞
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛 抽签(代码填空)
- 蓝桥杯JAVA语言B组_三羊献瑞
- 蓝桥杯JAVA语言B组_圆周率
- 第七届蓝桥杯省赛Java语言C组_小题答案
- 第七届蓝桥杯省赛Java语言C组_骰子游戏
- 第七届蓝桥杯省赛Java语言C组_搭积木
- 分离字符串中的字母和数字并使得字母在前数组在后
- 使用命令行方式创建和启动android模拟器+
- oj121. Best Time to Buy and Sell Stock
- HTML巩固练习之超链接的使用
- AngularJS学习笔记--服务的创建方法factory() service() provider()等
- 第七届蓝桥杯JAVA语言B组_抽签
- git是怎么实现版本的时光穿梭的
- 【Maven】Nexus3搭建Maven私有仓库及使用
- P1113 杂务
- scikit-image 图像处理
- maven依赖pom.xml
- windows常用命令
- 第60天(就业班) Lucene入门、创建索引库、CRUD
- 剑指Offer(java答案)