Board covering problem
来源:互联网 发布:form表单怎么提交数据 编辑:程序博客网 时间:2024/04/27 23:34
Good morning.everyone.Yesterday i said today i will give you some harder problems solved by divide and conquer.And here it is,The Board covering problem.The code is wrote by myself,and it is not simple enough.So if you can simplify it,please share with me.
Have fun coding,i_human.Have fun coding,everyone!
THE CODE:
#include "stdafx.h"
#include<iostream>
#define a1 1000
int z=1;
int a[a1][a1];
using namespace std;
void cover(int m,int n,int o,int p,int x,int y);
int main()
{
int k;
int i,j;
int l=1;
cin>>k>>i>>j;
a[i][j]=0;
for(int l1=0;l1<k;l1++)
l=l*2;
cover(0,l-1,0,l-1,i,j);
for(int i1=0;i1<l;i1++)
{
for(int i2=0;i2<l;i2++)
cout<<a[i1][i2]<<" ";
cout<<endl;
}
system("pause");
return 0;
}
void cover(int m,int n,int o,int p,int x,int y)
{
if(n-m==1 && p-o==1)
{
int c=a[x][y];
a[m][o]=a[m][p]=a[n][o]=a[n][p]=z;
z++;
a[x][y]=c;
}
else
{
if(x<=(m+n)/2 && y<=(o+p)/2)
{
a[(m+n)/2][(o+p)/2+1]=a[(m+n)/2+1][(o+p)/2]=a[(m+n)/2+1][(o+p)/2+1]=z;
z++;
cover(m,(m+n)/2,o,(o+p)/2,x,y);
cover(m,(m+n)/2,(o+p)/2+1,p,(m+n)/2,(o+p)/2+1);
cover((m+n)/2+1,n,o,(o+p)/2,(m+n)/2+1,(o+p)/2);
cover((m+n)/2+1,n,(o+p)/2+1,p,(m+n)/2+1,(o+p)/2+1);
}
if(x<=(m+n)/2 && y>(o+p)/2)
{
a[(m+n)/2][(o+p)/2]=a[(m+n)/2+1][(o+p)/2]=a[(m+n)/2+1][(o+p)/2+1]=z;
z++;
cover(m,(m+n)/2,o,(o+p)/2,x,y);
cover(m,(m+n)/2,o,(o+p)/2,(m+n)/2,(o+p)/2);
cover((m+n)/2+1,n,o,(o+p)/2,(m+n)/2+1,(o+p)/2);
cover((m+n)/2+1,n,(o+p)/2+1,p,(m+n)/2+1,(o+p)/2+1);
}
if(x>(m+n)/2 && y>(o+p)/2)
{
a[(m+n)/2][(o+p)/2]=a[(m+n)/2+1][(o+p)/2]=a[(m+n)/2][(o+p)/2+1]=z;
z++;
cover(m,(m+n)/2,o,(o+p)/2,x,y);
cover(m,(m+n)/2,o,(o+p)/2,(m+n)/2,(o+p)/2);
cover((m+n)/2+1,n,o,(o+p)/2,(m+n)/2+1,(o+p)/2);
cover(m,(m+n)/2,(o+p)/2+1,p,(m+n)/2,(o+p)/2+1);
}
if(x>(m+n)/2 && y<=(o+p)/2)
{
a[(m+n)/2][(o+p)/2]=a[(m+n)/2+1][(o+p)/2+1]=a[(m+n)/2][(o+p)/2+1]=z;
z++;
cover(m,(m+n)/2,o,(o+p)/2,x,y);
cover(m,(m+n)/2,o,(o+p)/2,(m+n)/2,(o+p)/2);
cover((m+n)/2+1,n,(o+p)/2+1,p,(m+n)/2+1,(o+p)/2+1);
cover(m,(m+n)/2,(o+p)/2+1,p,(m+n)/2,(o+p)/2+1);
}
}
}
0 0
- Board covering problem
- Board covering problems
- Problem A. Alter Board
- Covering
- board
- Board
- HDU6185-Covering
- Covering HDU
- Knight's Travel Problem on a custom sized board using double BFS Algorithm
- MySQL之Covering Index
- 什么是“Using Covering Indexes”
- MySQL之Covering Index
- Incomplete checkerboard covering
- MySQL之Covering Index
- MySQL之Covering Index
- python资源 covering
- POJ-2836-Rectangular Covering
- POJ2836--Rectangular Covering
- freemaker生成word
- LeetCode #162: Find Peak Element
- 字符串排列和组合的JAVA实现
- C#之WinForm基础 textbox控件变高,由单行输入改为多行输入
- 彼得·德鲁克:你事业的上限究竟在哪?
- Board covering problem
- MultipleTheme框架兼容RecyclerView和CardView&RecyclerView缓存机制
- MemCache 源自百度百科
- 常用HTML标签
- C1X 系列 : 多线程 (N1494)
- shiny--练习记录
- 224. Basic Calculator
- 事务复制工作机制
- POJ1006