蓝桥杯决赛之凑平方数
来源:互联网 发布:pads软件 编辑:程序博客网 时间:2024/06/04 18:28
凑平方数
把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的。
比如:0, 36, 5948721
再比如:
1098524736
1, 25, 6390784
0, 4, 289, 15376
等等...
注意,0可以作为独立的数字,但不能作为多位数字的开始。
分组时,必须用完所有的数字,不能重复,不能遗漏。
如果不计较小组内数据的先后顺序,请问有多少种不同的分组方案?
注意:需要提交的是一个整数,不要填写多余内容。
注意答案是300,这个题目用递归来做比较好,欢迎来喷
#include <iostream>#include<vector>#include<string>#include<string.h>using namespace std;string aa[700];string bb[110];int bi=0;int ai=0;int cnt=0;int ws=0;int biao[10]={0};int check1(long long a){ for(int i=0;i<=9;i++) { int count=0; long long b=a; while(b!=0) { int c=b%10; if(c==i) count++; if(count>1) return 0; b/=10; } } return 1;}string ts(long long a){ string ppp=""; int ci=0; if(a==0) ppp="0"; else { while(a!=0) {int c=a%10; ppp=(char)(c+48)+ppp; ci++; a/=10; } } return ppp;}int check2(string p){for(int i=0;i<p.size();i++){ if(biao[p[i]-48]==1) return 0;}return 1;}//进行回溯void biaoji(string str){ for(int i=0;i<str.size();i++) { biao[str[i]-48]=1; }}void fbiaoji(string str){ for(int i=0;i<str.size();i++) { biao[str[i]-48]=0; }}int check3(){ for(int i=0;i<10;i++) if(biao[i]==0) return 0; return 1;}void dfs(int ws,int c,int ti){ if(ws==10)//递归的终止条件 { return; }for(int i=ti+1;i<ai;i++)//然后是整个大循环,这个数是包括排列的,并不是说个数唯一且派利唯一{ if(ws+aa[i].size()>10)//如果现有的位数加上这一个位数会超的话,那么后面的一定超 return; else if(!check2(aa[i]))//如果位数不超的话,那么我们的数字如果已经有的位数被标记过,那么执行下一个 continue; else if(ws+aa[i].size()<=10&&check2(aa[i])) { biaoji(aa[i]); bb[c]=aa[i]; if(ws+aa[i].size()==10) { cnt++; for(int j=0;j<=c;j++) cout<<bb[j]<<" "; cout<<endl; fbiaoji(aa[i]); } dfs(ws+aa[i].size(),c+1,i); fbiaoji(aa[i]); }}}int main(){ for(long long i=0;i<1000000000;i++) if((long long)(i*i)<10000000000ll) { if(check1(i*i)) { string p=ts(i*i); aa[ai]=p; ai++; } } dfs(0,0,-1);//制表完成,格式为字符串 最后一个参数是用来空置每次递归循环的头部是来源于上一个递归的位置加1 cout<<cnt<<endl; return 0;}
阅读全文
0 0
- 蓝桥杯决赛之凑平方数
- 蓝桥杯2016决赛 凑平方数
- 2016蓝桥杯决赛 凑平方数(暴力DFS)
- 2016年蓝桥杯决赛 凑平方数
- 2016年蓝桥杯决赛第二题凑平方数
- 凑平方数 第七届蓝桥杯决赛javaA组
- 蓝桥杯 凑平方数
- 蓝桥杯决赛之组合数
- 第五届蓝桥杯决赛 生物芯片(完全平方数)
- 第七届蓝桥杯决赛JavaA组第二题_凑平方数
- 【第七届蓝桥杯大赛个人赛(软件类)决赛B组 凑平方数 】+ DFS + set
- 第七届蓝桥杯决赛 凑平方数 【简单写法+20多行代码】
- 2016年第七届 蓝桥杯 全国总决赛B题(完全平方数)
- 蓝桥杯决赛之方块填数
- 蓝桥杯 第七届决赛 平方末尾 JAVA
- 第七届蓝桥杯大赛个人赛决赛(软件类C语言B组)第二题:凑平方数(深搜)
- 凑平方数
- 凑平方数
- activemq安全设置 设置admin的用户名和密码
- VintaSoftTwain.NET SDK v10.2发布,增加Visual Studio .NET 2017演示
- INSERT IGNORE 与INSERT INTO的区别
- 【笔记】shiro中的cache缓存设置:
- shell递归输出文件名和目录名
- 蓝桥杯决赛之凑平方数
- 思维的局限
- 从零开始刷HDOJ(2)【HDOJ1001
- python函数式编程之偏函数
- MySQL高级 之 in和exists
- SQL注入过滤限制绕过方法---转
- Kotlin学习笔记——Day1
- 互联网实习工作准备
- 原生js---轮播图封装函数