AOJ.859 地毯填补问题 (递归与分治)
AOJ.859 地毯填补问题 (递归与分治)
题意分析
学习分治思想,第一次接触,
代码总览
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#define INF 0x3f3f3f3f
#define nmax 200
#define MEM(x) memset(x,0,sizeof(x))
using namespace std;
int k;
void work(int x,int y,int l,int temp,int fx,int fy)
{
if(temp==1){
if(fx==x && fy==y){
printf("%d %d %d\n",fx+1,fy+1,1);
return;
}
if(fx==x && fy!=y){
if(fx+1==7 && fy-1==2)
fx=6;
printf("%d %d %d\n",fx+1,fy-1,2);
return;
}
if(fx!=x && fy==y){
printf("%d %d %d\n",fx-1,fy+1,3);
return;
}
printf("%d %d %d\n",fx-1,fy-1,4);return;
}
int nx,ny,nl=l/2;
nx=x+nl;
ny=y+nl;
if(fx>=x && fx<nx && fy>=y && fy<ny){
printf("%d %d %d\n",nx,ny,1);
work(x,y,nl,temp-1,fx,fy);
work(x,ny,nl,temp-1,nx-1,ny);
work(nx,y,nl,temp-1,nx,ny-1);
work(nx,ny,nl,temp-1,nx,ny);
return;
}
if(fx>=x && fx<nx && fy>=ny){
printf("%d %d %d\n",nx,ny-1,2);
work(x,y,nl,temp-1,nx-1,ny-1);
work(x,ny,nl,temp-1,fx,fy);
work(nx,y,nl,temp-1,nx,ny-1);
work(nx,ny,nl,temp-1,nx,ny);
return;
}
if(fx>=nx && fy>=y && fy<ny){
printf("%d %d %d\n",nx-1,ny,3);
work(x,y,nl,temp-1,nx-1,ny-1);
work(x,ny,nl,temp-1,nx-1,ny);
work(nx,y,nl,temp-1,fx,fy);
work(nx,ny,nl,temp-1,nx,ny);
return;
}
printf("%d %d %d\n",nx-1,ny-1,4);
work(x,y,nl,temp-1,nx-1,ny-1);
work(x,ny,nl,temp-1,nx-1,ny);
work(nx,y,nl,temp-1,nx,ny-1);
work(nx,ny,nl,temp-1,fx,fy);
return;
}
int main ()
{
//freopen("in.txt","r",stdin);
int x,y,len =1,i;
scanf("%d",&k);
scanf("%d %d",&x,&y);
i = k;
while (i--) len*=2;
work(1,1,len,k,x,y);
}
AOJ.859 地毯填补问题 (递归与分治)的更多相关文章
- 浅谈分治 —— 洛谷P1228 地毯填补问题 题解
如果想看原题网址的话请点击这里:地毯填补问题 原题: 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿.宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子 ...
- [洛谷P1228]地毯填补问题 题解(分治)
Description 相传在一个古老的阿拉伯国家里,有一座宫殿.宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的 ...
- P1228 地毯填补问题(分治)
P1228 地毯填补问题(分治) 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿.宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将 ...
- 洛谷P1228 地毯填补问题
P1228 地毯填补问题 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿.宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站 ...
- 【递归与分治】 poj 1017
递归与分治经典例题 要点在于对3*3箱子的讨论 #include <iostream> #include <cstdio> using namespace std; in ...
- 递归与分治策略之循环赛日程表Java实现
递归与分治策略之循环赛日程表 一.问题描述 设有n=2^k个运动员要进行网球循环赛.现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次: (2)每个选手一天只能参赛一 ...
- 递归与分治策略之棋盘覆盖Java实现
递归与分治策略之棋盘覆盖 一.问题描述 二.过程详解 1.棋盘如下图,其中有一特殊方格:16*16 . 2.第一个分割结果:8*8 3.第二次分割结果:4*4 4.第三次分割结果:2*2 5.第四次分 ...
- [图解算法] 归并排序MergeSort——<递归与分治策略>
#include"iostream.h" void Merge(int c[],int d[],int l,int m,int r){ ,k=l; while((i<=m)& ...
- 洛谷 P1228 【地毯填补问题】
事实上感觉四个的形状分别是这样: spj报错: 1:c 越界 2:x,y 越界 3:mp[x][y] 已被占用 4:mp[x][y] 从未被使用 题解: 初看这个问题,似乎无从下手,于是我们可以先考虑 ...
随机推荐
- 用python读取配置文件config.ini
还在学习中...写的有点凌乱 感觉还是应该先学会读取配置文件才行,把一些经常需要修改的但是又经常需要用到的参数放到配置文件中方便使用(我是这么觉得的) 首先是config.ini的存放位置,我们把它放 ...
- DP动态规划练习
先来看一下经典的背包问题吧 http://www.cnblogs.com/Kalix/p/7617856.html 01背包问题 https://www.cnblogs.com/Kalix/p/76 ...
- 词嵌入向量WordEmbedding
词嵌入向量WordEmbedding的原理和生成方法 WordEmbedding 词嵌入向量(WordEmbedding)是NLP里面一个重要的概念,我们可以利用WordEmbedding将一个单 ...
- Java 单例模式探讨
以下是我再次研究单例(Java 单例模式缺点)时在网上收集的资料,相信你们看完就对单例完全掌握了 Java单例模式应该是看起来以及用起来简单的一种设计模式,但是就实现方式以及原理来说,也并不浅显哦. ...
- Beta阶段项目展示博客
Beta阶段项目展示 团队成员的简介 详细见团队简介 角色 姓名 照片 项目经理,策划 游心 策划 王子铭 策划 蔡帜 美工 赵晓宇 美工 王辰昱 开发.架构师 解小锐 开发 陈鑫 开发 李金奇 开发 ...
- PAT1024 强行用链表写了一发。
主要的思想还是 上课的那个PPT上面的 链表反转的思想. 然后加一点七七八八的 递推. 一层一层往下翻转就好啦. 1A 真开心. 代码:http://paste.ubuntu.net/16506799 ...
- [基于NetCore的简单博客系统]-登录
0-项目背景 一个基于.NET CORE RAZOR PAGES的简单博客系统 技术栈全部采用微软官方实现方式,目的是熟悉新技术 项目地址:https://github.com/ganqiyin/BL ...
- <Effective C++>读书摘要--Templates and Generic Programming<一>
1.The initial motivation for C++ templates was straightforward: to make it possible to create type-s ...
- <Android>资源的访问,颜色、字符串、尺寸、XML、DRAWABLES资源分使用
1.资源的访问 代码中使用Context的getResources()方法得到Resources对象,访问自己定义的资源R.资源文件类型.资源文件名称,访问系统定义的资源android.R. 资源文件 ...
- vuex介绍--一篇看懂vuejs的状态管理神器
原文,请点击此链接http://www.ituring.com.cn/article/273487