我就是挂个题在这儿,,,,不想debug。。。。。
**********************************************
改了一下,怎么说呢。。。。我过了我自己所理解的样例,但是没有过题目的样例。。。。。
#include <stdio.h>
int chh[4]={0,0,1,-1};
int chl[4]={1,-1,0,0};
int sum;
struct node
{
char a[13][11];
}map,mapp;
struct nodee
{
int a[12][10];
}vis,viss;
void init()
{
int i,j,k;
for(i=0;i<12;i++)
for(j=0;j<10;j++)
vis.a[i][j]=0;
}
void inits()
{
int i,j,k;
for(i=0;i<12;i++)
for(j=0;j<10;j++)
viss.a[i][j]=1;
}
void find(int h,int l,char c)
{
int i,j,k;
// vis.a[h][l]=1;
vis.a[h][l]=1;
// printf("**h=%d l=%d\n",h,l);
for(i=0;i<4;i++)
{
int hh=h+chh[i],ll=l+chl[i];
if(hh>=0&&hh<12&&ll>=0&&ll<10)
if(map.a[hh][ll]==c&&!vis.a[hh][ll]) {find(hh,ll,c);}
}
}
void change()
{
int i,j,hh,ll;
// init(viss,1);
inits();
// for(i=0;i<12;i++) {for(j=0;j<10;j++) printf("%d",viss.a[i][j]);printf("\n");}
// printf("*******\n");
hh=ll=0;
for(i=0;i<10;i++)
{
int flag=0;
for(j=0;j<12;j++)
{
if(!vis.a[j][i]) {mapp.a[hh][ll]=map.a[j][i];viss.a[hh++][ll]=0;flag=1;}
if(flag&&j==11) {ll++;hh=0;}
if(j==11) hh=0;
}
}
// for(i=11;i>=0;i--) {for(j=0;j<10;j++) printf("%d",viss.a[i][j]);printf("\n");}
map=mapp;
vis=viss;
}
void cal()
{
int i,j,k;
for(i=0;i<12;i++)
for(j=0;j<10;j++)
if(!vis.a[i][j]) sum++;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n)
{
int i,j,k;
char s[10];
sum=0;
// init(vis,0);
init();
for(i=11;i>=0;i--)
//gets(map.a[i]);
{
scanf("%s",map.a[i]);
// getchar();
}
// printf("i am the brilliant line \n");for(i=11;i>=0;i--){for(j=0;j<10;j++) printf("%c",map.a[i][j]);printf("\n");}
for(i=0;i<n;i++)
{
scanf("%s %d",s,&j);
j--;
k=s[0]-'a';
char c=map.a[j][k];
// printf("h=%d l=%d c=%c\n",j,k,c);
find(j,k,c);
// printf("$$$$$$$$$$$$$$$$$$\n"); for(j=11;j>0;j--) {for(k=0;k<10;k++) printf("%d",vis.a[j][k]); printf("\n");}
change();
// for(j=0;j<12;j++) {for(k=0;k<10;k++) printf("%d",vis.a[j][k]);printf("\n");}
}
cal();
printf("%d\n",sum);
}
}
/*
3
RYBBRBYYRY
RRRBBBBBRR
YRRBRBBBBR
RYYBRYYRYY
BRBBRBRBRY
YYBYRBBRRB
RYBBBBRYYY
YBRBRBRYRB
RYBBBBBBBY
YBBRRRRRBB
RBBRRBRYRR
BBBRRYYYRR
h 10
j 1
g 2
3
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYBYYBBBBB
YYBYYBBBBB
c 2
c 12
g 1
2
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYYYYBBBBB
YYBYYBBBBB
YYBYYBBBBB
g 1
c 12
*/