| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
大家帮我看看把,新手请教!#include <iostream>
#include <queue>
#include <stack>
using namespace std;
typedef struct{
int pre;
int change;
}RECORD;
int ChangeSwitch(int s,int x){
int col[]={4369,8738,17476,34952,4369,8738,17476,34952,4369,8738,17476,34952,4369,8738,17476,34952};
int row[]={15,15,15,15,240,240,240,240,3840,3840,3840,3840,61440,61440,61440,61440};
int t[]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
s=s^row[x];
s=s^col[x];
s=s^t[x];
return s;
}
void PrintResult(int s, RECORD record[]){
stack<int> list;
int i=0;
int r[]={4,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1};
int c[]={4,3,2,1,4,3,2,1,4,3,2,1,4,3,2,1};
int size;
while(record[s].pre!=0){
list.push(record[s].change);
s=record[s].pre;
}
size=list.size();
cout <<size<<endl;
for (i=0;i<size;i++){
//cout <<list.top()<<endl;
cout <<r[list.top()]<<" "<<c[list.top()]<<endl;
list.pop();
}
return;
}
void bfs(queue<int> &q, RECORD record[], bool checked[]){
int i;
int x;
int s=0;
while(q.size()!=0){
//cout <<"size:"<<q.size()<<endl;
x=q.front();
q.pop();
if (!checked[x]){
for (i=0;i<16;i++){
s=ChangeSwitch(x,i);
// cout <<"s="<<s<<endl;
if(!checked[s]){
record[s].pre=x;
record[s].change=i;
}
if (s!=0){
checked[x]=true;
if(!checked[s]) q.push(s);
}else{
// cout <<record[0].pre<<endl;
PrintResult(0, record);
return;
}
}
}
}
}
超时了..
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator