caioj1037: 귀속 7 (미로를 걷다)

[잡담]
앞에 출력 행렬을 쓸 때 상량수 그룹이 이 문제를 쓰는 게 편해요. 선생님이 말씀하시고 전에 얽힌 문제를 알게 됐어요. 왜 const int인지 모르겠지만 const를 안 써도 돼요.
1.dx[]dy[] 괄호에 숫자 프로그램을 쓰지 않으면 그룹에 몇 개의 요소가 자동으로 계산됩니다
괄호 안에 원소 개수, 예를 들면 원소 4개가 있지만 아래 표는 0123입니다.
2. 출력 시 순환 중인 k를 n으로 쓰는 습관 때문에 여기서 종점에 도달하는 걸음수는 n이 아니라 확실하지 않다
3. 아래 표시는 0123이기 때문에 순환은 0~3, 1~4를 쓸 수 없고 방향은 이 네 가지만 한 번 가면 끝납니다. 행렬의 문제와 달리 i=4를 쓸 수 없습니다.
4. 낮잠이 덜 깼나봐요(20min도 안 돼서 깨웠어요qwq) 입력해서 적어주세요 & 이중 순환 변수 모두 i...우연인 척 qwq
[제목] n*m칸의 미로(n줄, m열이 있음을 나타냄)가 있는데 그 중에서 갈 수 있는 것도 있고 갈 수 없는 것도 있다. 만약에 1로 갈 수 있다는 것을 표시하면 0은 갈 수 없다는 것을 나타낸다. 파일은 이 n*m개의 데이터와 시작점, 끝점을 읽는다(시작점과 끝점은 모두 두 개의 데이터로 묘사하고 각각 이 점의 줄 번호와 열 번호를 나타낸다).지금 네가 프로그래밍을 해서 모든 실행 가능한 길을 찾아내야 한다. 걷는 길에 중복된 점이 없으면 위아래 좌우 네 방향만 갈 수 있다.만약 한 개의 길이 모두 실행할 수 없다면, 상응하는 정보를 출력한다.왼쪽 위와 오른쪽 아래의 순서로 확장해 주십시오. 즉, (0,-1), (-1,0), (0,1), (1,0) [입력 형식] 첫 번째 줄은 두 개의 수 n, m(1"로 방향을 표시해야 한다.실행 가능한 길이 없으면 -1을 출력합니다.[샘플 입력] 5 61 0 1 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 15 6 [샘플 출력] (1,1) -> (2,1) -> (2,2) -> (2,3) -> (2,4) -> (2,5) -> (3,5) -> (3,4) -> (3,3) -> (4,3) -> (4,4) -> (4,4) -> (4,5) -> (5,5) -> (5,6) (1,1) -> (2,1) -> (2,2) ->(2,3) ->(2,4) ->(2,5) ->(3,5) ->(3,4) ->(4,4) ->(4,5) ->(5,5) ->(5,6)(1,1) ->(2,1) ->(2,3) ->(2,4) ->(2,5) ->(3,5) ->(4,5) ->(5,5) ->(5,6)(1,1) ->(2,1) -> (2,2) -> (2,3) -> (2,4) -> (3,4) -> (3,3) -> (4,3)->(4,4)->(4,5)->(5,5)->(5,6)(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(4,4)->(4,5)->(5,5)->(5,6)(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(2,4)->(2,5)->(3,5)->(4,5)->(5,5)->(5,6)(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(3,4)->(4,4)->(4,5)->(5,5)->(5,6)(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(3,4)->(2,4)->(2,5)->(3,5)->(4,5)->(5,5)->(5,6)(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(3,4)->(3,5)->(4,5)->(5,5)->(5,6)(1,1)->(2,1)->(2,2)->(2,3)->(3,3)->(4,3)->(4,4)->(4,5)->(5,5)->(5,6)
[코드]
#include
using namespace std;
const int dx[]={0,-1,0,1};
const int dy[]={-1,0,1,0};
int n,m,stx,sty,edx,edy,a[20][20],px[400],py[400];
bool flag;
void dfs(int x0,int y0,int k){
	px[k]=x0;
	py[k]=y0;
	if(x0==edx&&y0==edy){
		for(int i=1;i<=k;i++)
			i",px[i],py[i]):printf("(%d,%d)
",px[i],py[i]); flag=true;// -1 return; } for(int i=0;i<4;i++){// 1 if(a[x0+dx[i]][y0+dy[i]]==1){ a[x0+dx[i]][y0+dy[i]]=0; dfs(x0+dx[i],y0+dy[i],k+1); a[x0+dx[i]][y0+dy[i]]=1; } } } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); scanf("%d%d",&stx,&sty); scanf("%d%d",&edx,&edy); a[stx][sty]=0;// 1 1 dfs(stx,sty,1); if(!flag) printf("-1
"); return 0; }

좋은 웹페이지 즐겨찾기