| ||||||||||
| 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 | |||||||||
求解 为什么老是Time Limit Exceeded啊!!!!#include<iostream>
#include<cstring>
using namespace std;
char ma[5][5];//用于输入
int state;
void shuru()
{
int i;
state=0;
for(i=0;i<4;i++){
cin>>ma[i];
int j;
for(j=0;j<4;j++)
if(ma[i][j]=='+')
state|=1<<(i*4+j);
}
}
//反转一个,并产生影响
int fanzhuan(int stat,int i)
{
int state=0;
state|=1<<i;
int j;
for(j=0;j<4;j++){
if(j!=i%4)state|=1<<(i-i%4+j);
if(j!=i/4)state|=1<<(j*4+i%4);
}
return (state^stat);
}
//输出坐标
void print(int i)
{
int j;
for(j=0;(1<<j)<=i;j++)
if((1<<j)&i)cout<<j/4+1<<" "<<j%4+1<<endl;
}
bool bbb()
{
int i;
for(i=0;i<(1<<16);i++)
{
int j,states=state;
for(j=0;(1<<j)<=i;j++)
if((1<<j)&i)
states=fanzhuan(states,j);
if(states==0){
int count=0;
for(j=0;j<16;j++)
if(1<<j&i)count++;
cout<<count<<endl;
print(i);
return true;
}
}
return false;
}
int main()
{
shuru();
if(!bbb())cout<<"Impossible\n";
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator