| ||||||||||
| 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>
using namespace std;
char s[4][4];
int a[4][4];
int b[4][4];
void flip(int i,int j)
{
if(i<3)
b[i+1][j]^=1;
if(i>0)
b[i-1][j]^=1;
if(j<3)
b[i][j+1]^=1;
if(j>0)
b[i][j-1]^=1;
b[i][j]^=1;
}
int main()
{
int i,j,k,l,m,n;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
scanf("%c",&s[i][j]);
if(s[i][j]=='\n')
j--;
if(s[i][j]=='b')
a[i][j]=1;
}
}
int count=0,max=17;
memcpy(b,a,sizeof(a));
/*for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d",a[i][j]);
printf("\n");
for(j=0;j<4;j++)
printf("%d",b[i][j]);
printf("\n");
}*/
int indix=1;
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==0)
max=count;
memcpy(b,a,sizeof(a));
for(k=0;k<4;k++)
{
count=1;
flip(0,k);
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==0)
if(max>count)
max=count;
memcpy(b,a,sizeof(a));
}
for(k=0;k<3;k++)
{
for(l=k+1;l<4;l++)
{
count=2;
flip(0,k);
flip(0,l);
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==0)
if(max>count)
max=count;
memcpy(b,a,sizeof(a));
}
}
for(k=0;k<4;k++)
{
count=3;
for(l=0;l<4;l++)
if(l!=k)
flip(0,l);
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==0)
if(max>count)
max=count;
memcpy(b,a,sizeof(a));
}
count=4;
for(k=0;k<4;k++)
flip(0,k);
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==0)
if(max>count)
max=count;
memcpy(b,a,sizeof(a));
indix=0;
count=0;
//if(max==17)
//{
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==4)
if(max>count)
max=count;
memcpy(b,a,sizeof(a));
for(k=0;k<4;k++)
{
count=1;
flip(0,k);
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==4)
if(max>count)
max=count;
memcpy(b,a,sizeof(a));
}
for(k=0;k<3;k++)
{
for(l=k+1;l<4;l++)
{
count=2;
flip(0,k);
flip(0,l);
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==4)
if(max>count)
max=count;
memcpy(b,a,sizeof(a));
}
}
for(k=0;k<4;k++)
{
count=3;
for(l=0;l<4;l++)
if(l!=k)
flip(0,l);
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==4)
if(max>count)
max=count;
memcpy(b,a,sizeof(a));
}
count=4;
for(k=0;k<4;k++)
flip(0,k);
for(i=1;i<4;i++)
{
for(j=0;j<4;j++)
if(b[i-1][j]==indix)
{
flip(i,j);
count++;
}
}
if(b[3][0]+b[3][1]+b[3][2]+b[3][3]==4)
if(max>count)
max=count;
//}
if(max==17)
printf("Impossible\n");
else
printf("%d\n",max);
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator