| ||||||||||
| 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.h>
#include <math.h>
bool puzzle[1000][1000];
bool press[1000][1000];
bool tmppuzzle[1000][1000];
void readInPuzzle();
void printPress();
bool check(int x);
int k;
void main()
{
int n,i;int flag=0;
cin >>n;
for(i=1;i<=n;i++){
//read in puzzle
readInPuzzle();
for(int j=0;j<(k+1)*(k+1);j++)
{if(check(j))
{printPress();
flag=1;
break;}
}
if(flag==0)
cout<<"inf"<<endl;
}
}
void readInPuzzle(){
char tmp[1000][1000],i,j;
cin>>k;
for(i=1;i<=k;i++)
for(j=1;j<=k;j++){
cin >> tmp[i][j];
if(tmp[i][j]=='y')
puzzle[i][j] = 0;
else
if(tmp[i][j]=='w')
puzzle[i][j] = 1;
}
}
void printPress(){
int i,j;int m=0;
for(i=1;i<=k;i++){
for(j=1;j<=k;j++)
{
m=m+(int)press[i][j];}
}
cout<<m<<endl;
}
bool check(int x){//checking if set first line of press to x,
// whether all lights are turned off
int i,j;
for(i=1;i<=k;i++)
for(j=1;j<=k;j++)
tmppuzzle[i][j] = puzzle[i][j];
for(i=1;i<=k;i++){
press[1][k+1-i]=(bool)(x%2);
x /= 2;
}
for(i=1;i<=k;i++){
if(press[1][i]==true){
tmppuzzle[1][i] = !tmppuzzle[1][i];
tmppuzzle[1][i-1] = !tmppuzzle[1][i-1];
tmppuzzle[1][i+1] = !tmppuzzle[1][i+1];
tmppuzzle[2][i] = !tmppuzzle[2][i];
}
}
int line;
for(line = 2; line<=k; line++){
for(i=1;i<=k;i++)
press[line][i] = tmppuzzle[line-1][i];
for(i=1;i<=k;i++){
if(press[line][i]==true){
tmppuzzle[line][i] = !tmppuzzle[line][i];
tmppuzzle[line][i-1] = !tmppuzzle[line][i-1];
tmppuzzle[line][i+1] = !tmppuzzle[line][i+1];
tmppuzzle[line-1][i] = !tmppuzzle[line-1][i];
tmppuzzle[line+1][i] = !tmppuzzle[line+1][i];
}
}
}
bool ret = false;
for(i=1;i<=k;i++) ret = ret || tmppuzzle[k][i];
return !ret;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator