레드와 블랙--딥 스쿼드
Write a program to count the number of black tiles which he can reach by repeating the moves described above.
Input The input consists of multiple data sets. A data set starts with a line containing two positive integers W and H; W and H are the numbers of tiles in the x- and y- directions, respectively. W and H are not more than 20.
There are H more lines in the data set, each of which includes W characters. Each character represents the color of a tile as follows.
‘.’ - a black tile ‘#’ - a red tile ‘@’ - a man on a black tile(appears exactly once in a data set)
Output For each data set, your program should output a line which contains the number of tiles he can reach from the initial tile (including itself).
Sample Input 6 9 ….#. …..# …… …… …… …… ……
@…
.#..#. 11 9 .#……… .#.#######. .#.#…..#. .#.#.###.#. .#.#..@#.#. .#.#####.#. .#…….#. .#########. ……….. 11 6 ..#..#..#.. ..#..#..#.. ..#..#..### ..#..#..#@. ..#..#..#.. ..#..#..#.. 7 7 ..#.#.. ..#.#..
.
…@…
.
..#.#.. ..#.#.. 0 0
Sample Output 45 59 6 13
AC 코드:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<queue>
using namespace std;
int f[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
char a[100][100];
int book[100][100],m,n,s;
int mm,nn;
void dfs(int x,int y);
int main()
{
int n,m,i,j,yy,ff;
while(~scanf("%d%d",&n,&m))
{
if(m==0&&n==0) return 0;
getchar();
memset(book,0,sizeof(book));
s=1;
for(i=0;i<m;i++)
{
gets(a[i]);
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]=='@')
{
//printf("%d %dpppppppppppppppppppppppppp
",m,n);
yy=i;
ff=j;
}
}
}
mm=m;
nn=n;
dfs(yy,ff);
printf("%d
",s);
}
}
void dfs(int x,int y)
{
//printf("%d------------%d
",mm,nn);
int i,fx,fy;
for(i=0;i<4;i++)
{
fx=x+f[i][0];
fy=y+f[i][1];
if(fx>=0&&fx<mm&&fy>=0&&fy<nn&&book[fx][fy]==0&&a[fx][fy]=='.')
{
//printf("ooooooooooooooooooooooooooo
");
s++;
book[fx][fy]=1;
dfs(fx,fy);
}
}
}
제목 전송문: Red and Black(클릭 시 문제 제출)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【each 문 중첩 거동】 each 안에 each 안에 each왜 each 안에 each를 넣고 싶어졌는가 하면 이런 식으로 계층의 카테고리 기능을 작성하는 과정에서 필요하다고 생각했습니다. 내용이 이런 느낌으로 어려워지고 있습니다. 카테고리 수는 모두 400 가까이 ... 유...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.