一、36进制

对于16进制,我们使用字母A-F来表示10及以上的数字。
如法炮制,一直用到字母Z,就可以表示36进制。
36进制中,A表示10,Z表示35,AA表示370
你能算出 MANY 表示的数字用10进制表示是多少吗?

#include<bits/stdc++.h>
using namespace std;int main() {std::ios::sync_with_stdio(false);string num="MANY";long ans=0, rate=36, n=10;int m[26];for (int c=0; c<26; c++) m[c]=n++;for (int i=0; i<num.size(); i++) {ans=ans*rate+m[num[i]-'A'];}cout << ans;return 0;
}

二、瓷砖样式

小明家的一面装饰墙原来是 3*10 的小方格。现在手头有一批刚好能盖住2个小方格的长方形瓷砖。瓷砖只有两种颜色:黄色和橙色。

小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。

瓷砖不能切割,不能重叠,也不能只铺一部分。另外,只考虑组合图案,请忽略瓷砖的拼缝。显然,对于 2*3 个小格子来说,口算都可以知道:一共10种贴法,如【p1.png所示】

但对于 3*10 的格子呢?肯定是个不小的数目,请你利用计算机的威力算出该数字。

注意:你需要提交的是一个整数,不要填写任何多余的内容(比如:说明性文字)

小明有个小小的强迫症:忍受不了任何2*2的小格子是同一种颜色。


答案:114434

方法一:dfs
  • 不能忍受 2 × 2 的格子全是一种颜色是关键
  • 其它格子按照尽量先铺满同一行所有格子再铺下一行的策略进行深搜
  • 这里处理的比较巧妙的是下标从 1 开始计算,这样可使得第一次检查可以检查到左上角
#include<bits/stdc++.h>
using namespace std;const int n=3, m=10, Y=1, O=2, EMPTY=-1;
int ans, g[n+5][m+5];bool chk(int x, int y) {int c=g[x][y];if (g[x][y-1]==c && g[x-1][y]==c && g[x-1][y-1]==c) return false;if (g[x-1][y]==c && g[x][y+1]==c && g[x-1][y+1]==c) return false;if (g[x][y-1]==c && g[x+1][y]==c && g[x+1][y-1]==c) return false;return true;
}
void dfs(int x, int y) {if (x==n && y>=m) {ans++;return;} if (y>m) {dfs(x+1, 1);return;}if (g[x][y]==EMPTY) {if (g[x][y+1] == EMPTY) {   //平铺g[x][y]=g[x][y+1]=Y;if (chk(x, y)) dfs(x, y+2);g[x][y]=g[x][y+1]=O;if (chk(x, y)) dfs(x, y+2);g[x][y]=g[x][y+1]=EMPTY;}if (g[x+1][y] == EMPTY) {   //竖铺g[x][y]=g[x+1][y]=Y;if (chk(x, y)) dfs(x, y+1);g[x][y]=g[x+1][y]=O;if (chk(x, y)) dfs(x, y+1);g[x][y]=g[x+1][y]=EMPTY;}} else {dfs(x, y+1);}
}
int main() {std::ios::sync_with_stdio(false);for (int i=1; i<=n; i++)for (int j=1; j<=m; j++) g[i][j]=EMPTY;dfs(1, 1);cout << ans;return 0;
}

【回溯】B043_LQ_36进制 瓷砖样式(暴搜+策略)相关推荐

  1. 第八届蓝桥杯C/C++程序设计本科B组决赛 ——瓷砖样式(填空题)【DP?我的暴力排列搜索】...

    标题:磁砖样式 小明家的一面装饰墙原来是 3*10 的小方格. 现在手头有一批刚好能盖住2个小方格的长方形瓷砖. 瓷砖只有两种颜色:黄色和橙色. 小明想知道,对于这么简陋的原料,可以贴出多少种不同的花 ...

  2. css设置背景透明度、16进制色值设置透明度

    1.rgba(推荐) (rgba与rgb区别:rgb和rgba都表示颜色.         rgb: 代表 红 绿 蓝 三种颜色         rgba: 在rbg的基础上加了 "alph ...

  3. 根据16进制输出所有汉字

    转自http://www.phpweblog.net/fuyongjie/archive/2009/03/13/6384.html <? php $begin   =   hexdec ( &q ...

  4. 前端开发 html第二课 自结束标签 注释 标签中的属性 文档声明 进制 字符编码 文档使用 VScode 实体 meta标签 语义化标签 块元素和行内元素 布局标签

    1 自结束标签 标签一般成对出现,但是也存在一些自结束标签 如: 多"/"和没有"/"区别不大 2 注释 注释的作用: 注释中的内容会被浏览器忽略,不会在网页中 ...

  5. c语言输出3010进制随机定式代码

    #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void) {freopen(&quo ...

  6. c语言输出3010进制3位数排列组合代码

    #include <stdio.h> #include <stdlib.h> int main(void) {freopen("3010进制3位数数字公式.txt&q ...

  7. sublime16进制转换_[转]sublime 使用技巧总结

    对于用惯了editplus的人来说,突然接触到sublime有点无所适从,不过稍微适应一段时间后,发现会渐渐的爱上这个小黑盒子. 那么sublime究竟好在啥地方呢? 我看最显著的特点就是他的智能联想 ...

  8. 【Luogu】P1013进制位(搜索)

    题目链接在这里 这题和虫食算比较类似.做完这道题可以去做虫食算.都是搜索一类的题. 这样 我们分析题目可以发现进制只可能是字母的个数,也就是n-1.为什么? 因为题目要求完整的加法表才算数.如果进制低 ...

  9. linux进制转换的函数,Linux shell 进制转换

    源地址链接:http://blog.csdn.net/axdc_qa_team/article/details/6090182 既然有需要,就把搜到感觉有用的进制转换函数或指令都贴在这里,便于以后应用 ...

最新文章

  1. sscanf高级用法级正则表达式
  2. 阿里云的服务器内网互通的前提条件
  3. 四十二、深入Java中的文件读取操作
  4. 关联式容器(map,set,multimap,multiset)
  5. PyCharm运行出现 Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run
  6. 关于arp.exe的一点应用
  7. java ui设计用什么_什么是UI设计?
  8. 【优秀选手采访】看十强选手如何顺利拿下腾讯offer
  9. Java 针对每个人安装的位置不同的情况 从快捷方式中获取到安装位置 运行谷歌浏览器
  10. 【亲测】Ripro子主题美化X系列主题(夏系列)-开源未加密
  11. 织梦网站模板的建站优势
  12. python 抓取上交所、深交所互动版块的投资者提问(散户评论)
  13. 两位顶级社会工程学大师:凯文-米特尼克和 弗兰克-阿巴内尔
  14. 会员管理系统(一)--页面登陆与注册
  15. BZOJ1066 蜥蜴
  16. python创建目录(文件夹)
  17. IC卡历史及分类命名
  18. 抖音自媒体运营工具合集
  19. R语言爬虫豆瓣高评分电影(喝最烈的酒,熬最深的夜,吃最好的胃药,敷最贵的面膜)
  20. DS18B20温度传感器原理详解及例程代码、漏极开路

热门文章

  1. ClippingNode做游戏的新手指导
  2. 2021-07-112021年中式烹调师(初级)模拟考试题及中式烹调师(初级)实操考试视频
  3. canvas 绘制八卦图
  4. Uber无人车愈挫愈勇 估值百亿 已运送数万乘客
  5. 以太网、网络拓扑结构分类、双绞线的传输距离和分类
  6. 天玑9000和骁龙8 gen1哪个好 天玑9000和骁龙8 gen1差距
  7. opencv3/C++ 机器学习-决策树/DTrees
  8. 什么是虚拟 DOM ?
  9. bigemap地图下载器 好用吗?
  10. mysql_assoc函数_PHP:MySQL函数mysql_fetch_assoc()的用法