Untitled
unknown
plain_text
4 years ago
4.2 kB
22
Indexable
#include <stdio.h>
int main(void)
{
int T,N,M,i,j,k,o,ns,o_row,ns_row,o_column,ns_column,x,y;
char wood[1000][1000]={'\0'};
char o_quantity[1000],ns_quantity[1000];
scanf("%d",&T);
for(i=0;i<T;i++)
{
scanf("%d %d",&N,&M);
for(j=0;j<N;j++)
{
scanf("%s",wood[j]);
}
for(j=0;j<N;j++)
{
o=0;
ns=0;
x=0;
y=0;
for(k=0;k<M;k++) //橫排
{
if(wood[j][k]=='o' && wood[j][k+1]=='o') //一個oo時+1
{
x=x+1;
}
if(wood[j][k]=='o' && wood[j][k+1]=='#' && x+1>o) //遇到o#且連續的個數大於之前的連續個數(o),就取代之前那個數,將x還原
{
o=x+1;
x=0;
}
if(wood[j][k]=='o' && wood[j][k+1]=='\0' && x+1>o) //遇到o結尾且連續的個數大於之前的連續個數(o),就取代之前那個數,將x還原
{
o=x+1;
x=0;
}
if(wood[j][k]=='#' && wood[j][k+1]=='#') //下三行原理同上三行
{
y=y+1;
}
if(wood[j][k]=='#' && wood[j][k+1]=='o' && y+1>ns)
{
ns=y+1;
y=0;
}
if(wood[j][k]=='#' && wood[j][k+1]=='\0' && y+1>ns)
{
ns=y+1;
y=0;
}
}
o_quantity[j]=o; //將同一橫排最大的連續個數存起來
ns_quantity[j]=ns;
}
o_row=0;
ns_row=0;
for(j=0;j<N;j++)
{
if(o_quantity[j]>o_row) //比較不同橫排的最大連續個數,找出MAX
{
o_row=o_quantity[j];
}
if(ns_quantity[j]>ns_row)
{
ns_row=ns_quantity[j];
}
}
for(k=0;k<M;k++)
{
o=0;
ns=0;
x=0;
y=0;
for(j=0;j<N;j++) //直排,原理皆同上
{
if(wood[j][k]=='o' && wood[j+1][k]=='o')
{
x=x+1;
}
if(wood[j][k]=='o' && wood[j+1][k]=='#' && x+1>o)
{
o=x+1;
x=0;
}
if(wood[j][k]=='o' && wood[j+1][k]=='\0' && x+1>o)
{
o=x+1;
x=0;
}
if(wood[j][k]=='#' && wood[j+1][k]=='#')
{
y=y+1;
}
if(wood[j][k]=='#' && wood[j+1][k]=='o' && y+1>ns)
{
ns=y+1;
y=0;
}
if(wood[j][k]=='#' && wood[j+1][k]=='\0' && y+1>ns)
{
ns=y+1;
y=0;
}
}
o_quantity[k]=o; //將同一直排最大的連續個數存起來
ns_quantity[k]=ns;
}
o_column=0;
ns_column=0;
for(k=0;k<M;k++)
{
if(o_quantity[k]>o_column) //比較不同直排的最大連續個數,找出MAX
{
o_column=o_quantity[k];
}
if(ns_quantity[k]>ns_column)
{
ns_column=ns_quantity[k];
}
}
if(o_row>o_column) //比較直排跟橫排 o的MAX,印出較大那個
{
printf("%d ",o_row);
}
else
{
printf("%d ",o_column);
}
if(ns_row>ns_column) //比較直排跟橫排 #的MAX,印出較大那個
{
printf("%d\n",ns_row);
}
else
{
printf("%d\n",ns_column);
}
}
return 0;
}Editor is loading...