7-3 棋盘覆盖 (10 分)(思路加详解)Come baby
一:题目:
输入格式:
输入三个数,分别是aa,bb,length.
输出格式:
输出整个棋盘。其中特殊方格填为0,然后铺棋盘的顺序为:先铺四个子棋盘交界的部分,然后递归的对每个子棋盘按照左上,右上,右下,左下的顺时针顺序铺满棋盘。每一块骨牌中三个方格数字相同,按照顺序标号,即第一块骨牌全标为1,第二块骨牌全标为2,…,以此类推。输出的每个数占4个场宽,右对齐。
输入样例:
1 1 4
结尾无空行
表示:特殊格子为(1,1),棋盘有4行4列。
输出样例:
0 2 3 32 2 1 35 1 1 45 5 4 4
表示:先铺三个1(一块L型骨牌),再铺三个2,…,最后铺三个5.
二:思路
这是分治算法的思想,把一个大问题化为小问题,但他特殊点,这个化为小问题之后,就不需要合并了
思路:
1.将棋盘划分为4个子棋盘 在某个棋盘中有特殊方格,而其他3个子棋盘没有特殊方格
2.在其他没有特殊方格的子棋盘的交汇处用L型的特殊方格进行覆盖
3.直到最后的size == 1 为止
三:上码
/*
思路:
1.将棋盘划分为4个子棋盘 在某个棋盘中有特殊方格,而其他3个子棋盘没有特殊方格
2.在其他没有特殊方格的子棋盘的交汇处用L型的特殊方格进行覆盖
3.直到最后的size == 1 为止 */ #include<bits/stdc++.h>
using namespace std;int cover[100][100];
int title = 1; //tr,tc:表示棋盘左上角的初始位置的行列号 ,dr dc 表示特殊方格的行列号 size = 2^k;
void board_cover(int tr,int tc,int dr,int dc,int size){if(size == 1){return ;} int num = title++;size = size / 2;//棋盘划分//1.棋盘的左上角 //如果特殊方格在左上角的棋盘中 if(dr < tr + size && dc < tc + size)board_cover(tr,tc,dr,dc,size);else{//如果方格不在左上角的子棋盘中,那么的话在子棋盘的最右下角 覆盖一个方格 cover[tr + size - 1][tc + size - 1] = num;board_cover(tr,tc,tr + size - 1,tc + size -1,size); //tr + size - 1,tc + size -1 特殊方格的坐标 }//2.棋盘的右上角//如果特殊方格在棋盘的子棋盘的右上角 if(dr < tr + size && dc >= tc + size)board_cover(tr,tc + size,dr,dc,size);else{//如果方格不在右上角的子棋盘中,那么的话在子棋盘的最左下角 覆盖一个方格cover[tr + size - 1][tc + size] = num;board_cover(tr,tc + size,tr + size - 1,tc + size,size); }//3.棋盘的右下角if(dr >= tr + size && dc >= tc + size)board_cover(tr + size,tc + size,dr,dc,size);else{cover[tr + size][tc + size] = num;board_cover(tr + size,tc + size,tr + size,tc + size,size);}//4.棋盘的左下角if(dr >= tr + size && dc < tc + size)board_cover(tr + size,tc,dr,dc,size);else{cover[tr + size][tc + size - 1] = num;board_cover(tr + size,tc,tr + size,tc + size -1,size); }} int main(){int dr,dc,length;cin >> dr >> dc >> length;cover[dr][dc] = 0; board_cover(1,1,dr,dc,length);for(int i = 1; i <= length; i++){ for(int j = 1; j <= length; j++){//cout << ' ' << ' ' << ' ' << cover[i][j];//这里的输出格式是为4个字节 不能是前面3个空 printf("%4d",cover[i][j]);}cout << endl;}}
7-3 棋盘覆盖 (10 分)(思路加详解)Come baby相关推荐
- 7-2 最长公共子序列 (10 分)(思路加详解)
一:题目 给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少. 输入格式: 第一行包含两个整数N和M.1≤N,M≤1000 第二行包含一个长度为N的字符串,表 ...
- 7-5 排列的字典序问题 (10 分)(思路加详解全排列问题+vector容器做法)Come Baby!
一:题目 n个元素 {1,2, -,n} 有n!个不同的排列.将这 n! 个排列按字典序排列, 并编号为 0,1,-,n!-1 .每个排列的编号为其字典序值.例如,当n=3时,6个不同排列的字典序值如 ...
- 7-53 两个有序序列的中位数 (25 分)(思路加详解)用STL容器中的set容器的自动去重过不去
一:题目 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A 0 ,A 1 ,⋯,A N−1 的中位数指A (N−1)/2 的值,即第⌊(N+1)/ ...
- 7-35 城市间紧急救援 (25 分)(思路加详解)
一:题目 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城 ...
- 7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!
一:题目 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以 ...
- 7-3 树的同构 (25 分)(思路加详解)来呀baby!!!!!!!!
一:题目 7-3 树的同构 (25 分) 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把 ...
- 7-52 两个有序链表序列的交集 (20 分)(思路加详解尾插法)come Boby!
一:题目 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列) ...
- 7-6 0-1背包 (20 分)(思路加详解+网格做法+动态规划)Come Baby !!!!!!!!!!!!!!
一:题目 给定n(n<=100)种物品和一个背包.物品i的重量是wi,价值为vi,背包的容量为C(C<=1000).问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择 ...
- 7-50 畅通工程之局部最小花费问题 (35 分)(思路加详解)来呀兄弟们冲呀呀呀呀呀呀呀
一:题目 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出"畅通工程"的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要 ...
最新文章
- ubuntu 18.04设置系统自带系统截图快捷键
- 画动态分析图的个人小技巧
- CentOS下升级python版本
- 使用Ansible进行硬件引导
- 因为计算机丢失user32.dll,无法启动程序,说是计算机丢失user32.dll
- 专栏 | 是什么成就了中国最具创新力的公司,帮他们的超脑计划孵出阿尔法蛋?...
- 使用VGG16网络结构训练自己的图像分类模型
- 整体资产评估需要资料清单
- 各领域医疗机器人分析
- 古镇、温泉、阳澄湖品蟹二日游--这个周末,终于放松了一下。
- CSS 滚动条,浮动问题,图片bug
- 监控系统选型,这篇不可不读!
- 老总让做后台接口监控,我却开发了一个App
- 小i机器人2019数博会C位展实力 “认知智能”引领行业创新变革
- 学习笔记20220513
- 三角函数不定积分(三)
- 学习科学与技术——六顶思考帽(小组研讨)
- 悲催的一级建造师成绩
- css 霓虹灯转动效果,关于css:如何用纯-CSS-实现酷炫的霓虹灯效果
- 驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)
热门文章
- PHP基础(必须熟练掌握的基础)
- [转]在C#中像Python一样编写TensorFlow机器学习代码
- 【经典回放】多种语言系列数据结构算法:二叉树(JavaScript版)
- Android之提示Cannot call this method while RecyclerView is computing a layout or scrolling
- linux之通过tail命令动态跟踪日志文件里面的末尾信息
- Android之日期时间选择器使用方法
- 【C语言简单说】十九:二维数组循环嵌套(1)
- python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算
- c 正则提取html,c – 正则表达式以获取HTML表格内容
- 数据结构关键路径_数据结构与算法之关键路径_一点课堂(多岸学院)