말의 주법 SDUT
1598 단어 bfs
말의 걸음걸이
Time Limit: 1000ms Memory limit: 65536K여기를 누르세요^_^
제목 설명
4*5의 바둑판에서 말의 초기 위치 좌표(종횡) 위치는 키보드에 입력되어 말이 초기 위치의 모든 다른 주법의 총수를 되돌릴 수 있도록 한다.말의 초기 위치 좌표가 바둑판의 경계를 초과하면 ERROR이 출력됩니다.예를 들어 초기 위치가 46이면 ERROR이 출력됩니다.
입력
입력 데이터는 한 줄만 있고 공백으로 분리된 두 개의 정수가 있어 말이 있는 초기 위치 좌표를 나타낸다.첫 번째 줄의 첫 번째 열 위치 번호는 (1) 입니다.
출력
한 줄을 출력하면 하나의 정수만 있고 말이 초기 위치를 되돌릴 수 있는 모든 다른 주법의 총수를 나타낸다.
입력한 말의 초기 위치가 바둑판 경계를 벗어나면 ERROR이 출력됩니다.
예제 입력
2 2
예제 출력
4596
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
int vis[10][10];
int mx[]={-1,-2,-2,-1,1,2,2,1};
int my[]={2,1,-1,-2,-2,-1,1,2};
int s;
void f(int a,int b)
{
int i,j,k;
for(i=0;i<8;i++)
{
int cx=mx[i]+a;
int cy=my[i]+b;
if(cx==n&&cy==m)
{
s++;
}
else if( cx<=4&&cx>=1&&cy<=5&&cy>=1&&!vis[cx][cy])
{
vis[cx][cy]=1;
f(cx,cy);
}
}
vis[a][b]=0;//biao ji yao qing
}
int main()
{
int i,j,k;
while(cin>>n>>m)
{
s=0;
memset(vis,0,sizeof(vis));
if(n<=4&&n>=1&&m<=5&&m>=1)
{
vis[n][m]=1;
f(n,m);
cout<<s<<endl;
}
else
cout<<"ERROR"<<endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
나무깊이 우선 탐색(DFS) 깊이 우선 검색(DFS)은 트리 또는 그래프 데이터 구조를 탐색하거나 검색하기 위한 알고리즘입니다. 하나는 루트에서 시작하여(그래프의 경우 임의의 노드를 루트로 선택) 역추적하기 전에 각 분...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.