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] 从未被使用 题解: 初看这个问题,似乎无从下手,于是我们可以先考虑 ...
随机推荐
- 修改Eclipse中项目在Apache Tomcat中的部署路径
在Eclipse中配项目已经部署到如下默认目录下:eclipse workspace/.metadata/.plugins/org.eclipse.core.resources/.projects. ...
- 为什么测试人员必须掌握Linux?
相信点进来的小伙伴不是对Linux感兴趣就是对测试感兴趣了,也希望本文可以帮助之前接触过Linux的小伙伴找到继续坚持学习下去的动力,之前没接触过Linux的小伙伴也能找到开始学习Linux的兴趣. ...
- 【JSON类】使用说明
理解键名路径 键名路径(keyPath)用于定位json的键,比如:{book: {title:”中国人”} },键名路径 book.title 表定位到book下的title键. 对于值是数组类型的 ...
- DeepLearning Intro - sigmoid and shallow NN
This is a series of Machine Learning summary note. I will combine the deep learning book with the de ...
- 20172305 2018-2019-1 《Java软件结构与数据结构》第一周学习总结
20172305 2018-2019-1 <Java软件结构与数据结构>第一周学习总结 教材学习内容总结 本周内容主要为书第一章和第二章的内容: 第一章 软件质量: 正确性(软件达到特定需 ...
- dataTables基础函数变量
DataTable下有四个命名空间(namespace),分别是defaults,ext,models,oApi. Defaults:主要是用于初始化表格的一些选项. Ext:拓展项,提供额外的表格选 ...
- Python 服务器端表单验证插件
Python格式验证库 Cerberus 作者 MrStranger 关注 2016.08.02 14:44 字数 2140 阅读 79评论 0喜欢 1 Cerberus是一个验证Python对象.M ...
- Calculator Part Ⅰ
GitHub/object-oriented The title of the work 关于这次的作业,一开始我是觉得不难的,毕竟学长在已经提供了足够多的提示,实现步骤.需要那些方面的知识等等.但是 ...
- 求gcd(最大公因数),lcm(最小公倍数)模板
gcd(最大公因数),lcm(最小公倍数) #include<iostream> using namespace std; int gcd(int a,int b)//辗转相除法(欧几里德 ...
- ACM 第十四天
字符串: 1.KMP算法(模式串达到1e6) 模式串达到1e4直接暴力即可. 字符串哈希 字符串Hash的种类还是有很多种的,不过在信息学竞赛中只会用到一种名为“BKDR Hash”的字符串Hash算 ...