poj2569
http://poj.org/problem?id=2965
错了两次,第一次时间超限,第二次是数组定义的太大(怀疑错的地方都一样)
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std; #define maxn 70000 ////////////////不要定义太大,初始化不是不浪费时间的 struct node
{
int x, y, k, pre;
}v[maxn]; int p[10][10]; int changeNum(int a[][10]);//把二维数组转化成一个数字
void change();//构造异或数组
void changeXY(int x, int y, int a[][10]);//改变xy所在坐标的行和列
void FunOut(int pre);//输出前面的所有坐标
void BFS(); int main()
{
int i, j, a[10][10], m;
char ch; memset(v, 0, sizeof(v));
BFS(); for(i=1; i<=4; i++)
for(j=1; j<=4; j++)
{
cin >> ch; if(ch == '-')
a[i][j] = 0;
else
a[i][j] = 1;
} m = changeNum(a); printf("%d\n", v[m].k-1);
FunOut(m); return 0;
}
int changeNum(int a[][10])//把二维数组转化成一个数字
{
int i, j, m=0; for(i=1; i<=4; i++)
for(j=1; j<=4; j++)
{
m = m*2 + a[i][j];
} return m;
} void FunOut(int pre)//输出前面的所有坐标
{
if(pre== 0)
return ; FunOut(v[pre].pre); printf("%d %d\n", v[pre].x, v[pre].y);
}
void BFS()
{
queue<int> Q;
v[0].k = 1;
Q.push(0); change(); while(Q.size())
{
int q = Q.front();Q.pop(); for(int i=1; i<=4; i++)
for(int j=1; j<=4; j++)
{
int m = q ^ p[i][j]; if(v[m].k == 0)
{
v[m].k = v[q].k + 1;
v[m].pre = q;
v[m].x = i;
v[m].y = j; Q.push(m);
}
}
}
}
void changeXY(int x, int y, int a[][10])//改变xy所在坐标的行和列
{
int i; for(i=1; i<=4; i++)
{
a[x][i] = 1 - a[x][i];
a[i][y] = 1 - a[i][y];
}
a[x][y] = 1 - a[x][y];
} void change()//构造异或数组
{
int i, j, b[10][10] = {0}; for(i=1; i<=4; i++)
for(j=1; j<=4; j++)
{
changeXY(i, j, b);
p[i][j] = changeNum(b);
changeXY(i, j, b);
}
}
poj2569的更多相关文章
随机推荐
- powerdesigner设置唯一键,但不是主键的方式
[转载]http://blog.csdn.net/cnham/article/details/6676650 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的 ...
- 直接修改workspace下的配置文件与tomcat下的文件
项目中直接修改workspace下的配置文件与tomcat下的文件,可是还有错误,例如修改了4个配置文件中的一个配置文件.经查如下: 直接修改workspace下的配置文件与tomcat下的文件,可能 ...
- oracle中不曾熟悉的 to_char、to_number(未完待续)
十进制 十六进制88 58 用法一:Converts a HEX number to o FLOAT (转换一个十六进制数的浮标) SQL> sele ...
- 更新xcode后插件失效问题——不针对特定版本的通用解决方法
一.Xcode更新后插件失效的原理 1.每次更新Xcode后插件都会失效,其实插件都还在这个目录好好的躺着呢: ~/Library/Application Support/Developer/Shar ...
- Delphi ControlCount和ComponentCount的区别
ComponentCount指打开的窗体所拥有的控件个数,包含所有子组件.孙组件(子组件内的子组件) 如上图,Form1的ComponentCount是13,而Panel1的ComponentCoun ...
- WPF DataBinding之我见
原创,转载请注明出处:WPF DataBinding之我见 一.DataBinding介绍 数据绑定是在应用程序 UI 与业务逻辑之间建立连接的过程. 如果绑定具有正确设置并且数据提供正确通知,则 ...
- Java jdk环境搭建
java JDK的配置在我的电脑环境变量中配置: 主要的配置参数path 例:path = C:\jdk1.7.0_13\bin ; 另外一个JAVA_HOME 例:JAVA_HOME = C:\j ...
- windows core audio apis
这个播放流程有一次当初不是很理解,做个记录,代码中的中文部分,原文档是有解释的:To move a stream of rendering data through the endpoint buff ...
- jquery html 动态添加元素绑定事件
由于实际的需要,有时需要往网页中动态的插入HTML内容,并在插入的节点中绑定事件处理函数.我们知道,用Javascript向HTML文档中 插入内容,有两种方法, 一种是在写HTML代码写入JS,然后 ...
- iOS 取得CGimage字节数据的方法
通过我在网上搜索和总结,目前看来,我发现两种比较方便的方式. 1. CGImage -> CGDataProvider -> CFData -> xx * CGDataProvide ...