2015-年蓝桥杯C-(A组)赛题-dfs-手链样式
2018-03-27 22:55
357 查看
手链样式
小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。
他想用它们串成一圈作为手链,送给女朋友。
现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?
请你提交该整数。不要填写任何多余的内容或说明性的文字。
小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。
他想用它们串成一圈作为手链,送给女朋友。
现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?
请你提交该整数。不要填写任何多余的内容或说明性的文字。
#include <iostream> #include <map> #include <vector> #include <set> #include <cstdlib> #include <string> #include <string.h> #include <math.h> int a[15]; using namespace std; int sum=0; int b[5]={0,3,4,5}; int c[5]; set<string> ss; bool panduan(){ int i,j; string s=""; string s2=""; char ch[10]; char ch2[10]; for(j=1;j<=12;j++){ s=""; s2=""; for(i=j;i!=(13-j)/12*12+j-1;i=i%12+1){ itoa(a[i],ch,10); itoa(a[13-i],ch2,10); s=s+ch; s2=s2+ch2; } itoa(a[i],ch,10); itoa(a[13-i],ch2,10); s=s+ch; s2=s2+ch2; if(ss.count(s)!=0)return false; if(ss.count(s2)!=0)return false; } s=""; for(j=1;j<=12;j++){ itoa(a[j],ch,10); s=s+ch; } ss.insert(s); return true; } void dfs(int n){ if(n>12){ if(panduan())sum++; return; } for(int j=1;j<=3;j++){ if(c[j]<=b[j]-1){ a =j; c[j]++; dfs(n+1); a =0; c[j]--; } } } int main(){ memset(a,0,sizeof(a)); memset(c,0,sizeof(a)); ss.clear(); dfs(1); cout<<sum<<endl; return 0; }
相关文章推荐
- 2015-年蓝桥杯C-(A组)赛题-dfs-牌型种数
- 2015-年校内选拔-蓝桥杯C-(A组)赛题-dfs-7对数字
- 2015-年校内选拔-蓝桥杯C-(A组)赛题-dfs-数独
- 2015-年蓝桥杯C-(A组)赛题-dfs-九数组分数
- 2015 第六届 蓝桥杯省赛 手链样式
- 2015第6届蓝桥杯A组第7题 手链样式 题解
- 【DFS回溯】(2015)第六届蓝桥杯省赛 C/C++ A组 题解(第五题)
- 蓝桥杯 手链样式 (枚举)
- 2015-年蓝桥杯C-(A组)赛题-格子中输出
- 手链样式 --蓝桥杯
- 第六届 蓝桥杯 第七题 手链样式 枚举 暴力 解题报告
- 2016-年蓝桥杯C-(A组)赛题-dfs-寒假作业
- 2015蓝桥杯决赛 完美正方形(深搜DFS)
- 蓝桥杯 手链样式(暴力)
- 2016-年蓝桥杯C-(A组)赛题-dfs-剪邮票
- 第六届蓝桥杯A组C/C++ 第七题 手链样式
- 2015蓝桥杯 三羊献瑞(回溯法dfs)
- 第六届蓝桥杯A组C/C++ 第七题 手链样式
- 蓝桥杯_手链样式(排列)
- 2015年蓝桥杯C/C++A组第七题 手链样式