|

楼主 |
发表于 2019-5-19 22:23:36
|
显示全部楼层
这是我自己写的代码,过了7组数据,3组超时,请问如何改进提高效率呢?
#include<stdio.h>
#include<string.h>
int k;
char s[1010][1010],a[1010][1010];
void fun(int a,int b)
{
if(s[a][b]=='0')
{
s[a][b]=0;
if(s[a-1][b]=='1')
{
k++;
fun(a-1,b);
}
if(s[a+1][b]=='1')
{
k++;
fun(a+1,b);
}
if(s[a][b+1]=='1')
{
k++;
fun(a,b+1);
}
if(s[a][b-1]=='1')
{
k++;
fun(a,b-1);
}
}
else if(s[a][b]=='1')
{
s[a][b]=0;
if(s[a-1][b]=='0')
{
k++;
fun(a-1,b);
}
if(s[a+1][b]=='0')
{
k++;
fun(a+1,b);
}
if(s[a][b+1]=='0')
{
k++;
fun(a,b+1);
}
if(s[a][b-1]=='0')
{
k++;
fun(a,b-1);
}
}
}
int main()
{
memset(s,0,sizeof(s));
int i,n,m,x1,y1;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)scanf("%s",s[i]);
memcpy(a,s,sizeof(s));
while(m--)
{
memcpy(s,a,sizeof(a));
scanf("%d%d",&x1,&y1);
k=1;
fun(x1-1,y1-1);
printf("%d\n",k);
}
} |
|