要先把相应的in2.txt文件放到创建的cpp文件所在文件夹里面
①
#include <stdio.h>
#define N 20
int sum = 0, a[N][N] ;
void count(int i, int j)
{
a[i][j]=0;
sum++;
if(a[i-1][j-1]==1)
count( i-1, j-1 ) ;
if(a[i-1][j]==1)
count( i-1, j ) ;
if(a[i-1][j+1]==1)
count( i-1, j+1 ) ;
if(a[i][j+1]==1)
count( i, j+1 ) ;
if(a[i+1][j+1]==1)
count( i+1, j+1 ) ;
if(a[i+1][j]==1)
count( i+1, j ) ;
if(a[i+1][j-1]==1)
count( i+1, j-1 ) ;
if(a[i][j-1]==1)
count( i, j-1 ) ;
}
main(void)
{
int n, i, j ;
freopen("in2.txt", "r", stdin) ;
scanf("%d", &n) ;
for(i = 0 ; i < n ; i++)
for(j = 0 ; j < n ; j++)
scanf("%d", &a[i][j]) ;
count(n/2, n/2) ;
printf("%d\n", sum) ;
}
②
#include <stdio.h>
#include <stdlib.h>
void read();
void output();
void count(int i,int j);
int n, s=0, a[20][20] ;
void read()
{
FILE*fp;
fp = fopen("in2.txt","r");
if(fp==NULL)
{
printf("Can't open file!");
exit(0);
}
fscanf(fp,"%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
fscanf(fp,"%d",&a[i][j]);
}
}
void output()
{
printf("%d\n",n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
void count(int i, int j)
{
a[i][j]=0;
s++;
if(a[i-1][j-1]==1)
count( i-1, j-1 ) ;
if(a[i-1][j]==1)
count( i-1, j ) ;
if(a[i-1][j+1]==1)
count( i-1, j+1 ) ;
if(a[i][j+1]==1)
count( i, j+1 ) ;
if(a[i+1][j+1]==1)
count( i+1, j+1 ) ;
if(a[i+1][j]==1)
count( i+1, j ) ;
if(a[i+1][j-1]==1)
count( i+1, j-1 ) ;
if(a[i][j-1]==1)
count( i, j-1 ) ;
}
int main()
{
read();
printf("原文件:\n");
output();
count(n/2,n/2);
printf("连成一片的个数:\n%d\n",s);
}