栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

蓝桥杯模拟赛(排列小球)(DFS实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯模拟赛(排列小球)(DFS实现)

package 蓝桥杯题目;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class 排列小球 {
//由于下面生成的str数据可能重复,所以我们将其放入set去重,最后只需要输出set集合的size就是答案了
	static Set set=new HashSet();
	static char[] str;
	static int R,G,B;	//R,G,B分别表示红绿蓝球的数量
	//n表示前一层小球个数,str是用来储存小球的数组,cur是str数组的当前的下标
	public static void dfs(int R,int G,int B,int n,char[] str,int cur) {
		if(R==0&&G==0&&B==0) {
			String STR=new String(str);
			set.add(STR);
			return ;
		}
		
		for(int i=0;i<3;i++) {		//第一层用来选择球的颜色
			int t = 0;				//t表示当前选的什么颜色的球的个数(当前剩下的个数)
			if(i==0)	t=R;
			if(i==1)	t=G;
			if(i==2)	t=B;
			for(int j=1;j<=t;j++) {	//第二层用来选择放多少个(j表示当前选取的个数)
				if(j>n) {
					if(i==0)	R-=j;
					if(i==1)	G-=j;
					if(i==2) 	B-=j;
					//这里我们将选择了颜色的j个球全部放入str数组中
					for(int q=0;q 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号