2015 第六届 蓝桥杯省赛 手链样式
2017-05-23 18:22
211 查看
2015 第六届 蓝桥杯省赛 手链样式
题目:
手链样式
小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。
他想用它们串成一圈作为手链,送给女朋友。
现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?
请你提交该整数。不要填写任何多余的内容或说明性的文字。
题解:
答案:
1170
题目:
手链样式
小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。
他想用它们串成一圈作为手链,送给女朋友。
现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?
请你提交该整数。不要填写任何多余的内容或说明性的文字。
题解:
package lq; import java.util.HashSet; public class BraceletStyle { static char[] color={'r','w','y'}; static int[] co={3,4,5}; static int len=12; static HashSet<String> set=new HashSet<String>(); //static int [] a=new int[]{1,1,1,1}; static boolean pd(String s){ String ds=s+s;;//把字符串拼接成两段,取长度为len的子串,模拟随意转动的效果 for(int i=0;i<len;i++){ String tmp=ds.substring(i,i+len); if(set.contains(tmp)) return false; StringBuilder bs=new StringBuilder(tmp);//翻转 tmp=bs.reverse().toString(); if(set.contains(tmp)) return false; } /* StringBuilder bs=new StringBuilder(s); String tmp=bs.reverse().toString(); if(set.contains(tmp)) return false;*/ return true; } static void dfs(String x){ if(x.length()==12){ // System.out.println(x); if(pd(x)){ set.add(x); } return; } String tx=x; for(int i=0;i<3;i++){ tx=x; if(co[i]!=0){ tx+=color[i]; co[i]--; dfs(tx); co[i]++; } } } public static void main(String[] args) { dfs(""); System.out.println(set.size()); } }
答案:
1170
相关文章推荐
- 第六届蓝桥杯A组C/C++ 第七题 手链样式
- 2015第6届蓝桥杯A组第7题 手链样式 题解
- 第六届 蓝桥杯 第七题 手链样式 枚举 暴力 解题报告
- 第六届蓝桥杯-手链样式
- 15年第六届蓝桥杯第七题_手链样式_(stl_string)
- 2015-年蓝桥杯C-(A组)赛题-dfs-手链样式
- 第六届蓝桥杯A组C/C++ 第七题 手链样式
- 【指针数组】(2015)第六届蓝桥杯省赛 C/C++ A组 题解(第三题)
- 2015第六届蓝桥杯 06 奇妙的数字 (java)
- 蓝桥杯 手链样式(暴力)
- 2015第六届蓝桥杯C++B组第八题:移动距离
- 2015第六届蓝桥杯 08 移动距离(java)
- 2015第六届蓝桥杯 09 打印大X(java)
- 第六届蓝桥杯2015-省赛-C语言大学B组 个人题解
- 2015第六届蓝桥杯 A组 C/C++ 真题及题解
- 2015 蓝桥杯第六届 省赛java A组第7题 扑克牌组合
- 2015第六届蓝桥杯 07 牌型种数(java)
- 2015第六届蓝桥杯 07 加法变乘法 (java)
- 第六届蓝桥杯2015本科B组c/++部分解题报告
- 【DFS回溯】(2015)第六届蓝桥杯省赛 C/C++ A组 题解(第六题)