2016蓝桥杯决赛 凑平方数(暴力DFS)
来源:互联网 发布:爱站seo查询 编辑:程序博客网 时间:2024/06/08 06:21
凑平方数
把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的。 比如:0, 36, 5948721
再比如: 1098524736 1, 25, 6390784 0, 4, 289, 15376 等等…
注意,0可以作为独立的数字,但不能作为多位数字的开始。 分组时,必须用完所有的数字,不能重复,不能遗漏。
如果不计较小组内数据的先后顺序,请问有多少种不同的分组方案?
注意:需要提交的是一个整数,不要填写多余内容。
思路:
用到了STL里面的排列组合算法
next_permutation()返回的是一个布尔值,并且在内部已经把一个数组的顺序或者一个string的顺序改变了
然后利用set有去重的特性来插入
枚举所有可能的情况搜索即可
代码:
#include<cstdio>#include<cstring>#include <cstdlib>#include<cctype>#include<string>#include<set>#include<iostream>#include<stack>#include<cmath>#include<queue>#include<vector>#include<algorithm>#define mem(a,b) memset(a,b,sizeof(a))#define inf 0x3f3f3f3f#define mod 10000007#define debug() puts("whatthefuck!!!")#define N 1111111#define M 1000000#define ll long longusing namespace std;int a[10] = { 0,1,2,3,4,5,6,7,8,9 };ll n1[10];set<string>s;void dfs(int step, int num)//step代表搜索的深度,num代表个数{ if (step == 10)//如果已经用完所有的10个数 { ll n2[10]; for (int i = 0; i < num; i++) { n2[i] = n1[i]; } sort(n2, n2 + num); string xu; char str[100]; for (int i = 0; i < num; i++) { sprintf(str, "%lld", n2[i]);//转换成字符串 xu += str; xu += "-"; } cout << xu << endl; s.insert(xu);//利用去重的特性插入 return; } if (a[step] == 0)//0也是一个完全平方数 { n1[num] = 0; dfs(step + 1, num + 1); } else { ll sum = 0; for (int i = step; i < 10; i++) { sum = sum * 10 + a[i];//算出当前所得到的值 double son = sqrt(sum); if (son == (int)son)//构成一个完全平方数 { n1[num] = sum; dfs(i + 1, num + 1); } } }}int main(){ do { mem(n1, 0); dfs(0, 0); } while (next_permutation(a,a+10)); cout << s.size() << endl; return 0;}
阅读全文
0 0
- 2016蓝桥杯决赛 凑平方数(暴力DFS)
- 蓝桥杯2016决赛 凑平方数
- 蓝桥杯决赛之凑平方数
- 2016年蓝桥杯决赛 凑平方数
- 【第七届蓝桥杯大赛个人赛(软件类)决赛B组 凑平方数 】+ DFS + set
- 2016年蓝桥杯决赛第二题凑平方数
- 凑平方数 第七届蓝桥杯决赛javaA组
- 2016年第七届 蓝桥杯 全国总决赛B题(完全平方数)
- 蓝桥杯 排它平方数 dfs
- 蓝桥杯 凑平方数
- 第五届蓝桥杯决赛 生物芯片(完全平方数)
- 第七届蓝桥杯大赛个人赛决赛(软件类C语言B组)第二题:凑平方数(深搜)
- 2015第六届蓝桥杯决赛--方格填数(DFS)
- 第七届蓝桥杯决赛JavaA组第二题_凑平方数
- 第七届蓝桥杯决赛 凑平方数 【简单写法+20多行代码】
- 2016蓝桥杯决赛 机器人塔(深搜DFS)
- 2016蓝桥杯决赛 机器人塔(深搜DFS)
- 蓝桥杯 第七届决赛 平方末尾 JAVA
- js中事件对象event的兼容性问题
- 遗传算法详解
- Markdown常识
- 泛型
- [leetcode: Python]530. Minimum Absolute Difference in BST
- 2016蓝桥杯决赛 凑平方数(暴力DFS)
- virsh 命令
- cloudera安装
- Vim常用命令
- 手上只有一个模型文件,怎样用tensorboard查看其模型图Graph?
- 自定义Realm实现认证
- HDU2054-A == B ?【字符串处理】
- Android A/B System OTA分析(三)主系统和bootloader的通信
- [学习笔记]Android中AIDL的理解与使用