JAVA 말의 편력
1366 단어 Algorithm
5*4 의 바둑판 에서 말 은'일'자 를 기울 일 수 밖 에 없다.말 은 위치(x,y)에서 출발 하여 바둑판 의 모든 칸 을 한 번 씩 걷 고 한 번 만 걷 습 니 다.모든 경 로 를 찾 아 보 세 요.
입력
x,y,말의 초기 위 치 를 나타 낸다.
출력
모든 칸 을 한 번 씩 가 는 경로 의 총 수 를 이 경로 가 존재 하지 않 으 면'No solution!'을 출력 합 니 다.
샘플 입력 복사
1 1 2 2
샘플 출력 복사
32 No solution!
package book;
import java.util.Scanner;
public class Horse2{
static int[][] move = {{2,1},{2,-1},{1,2},{1,-2},{-1,-2},{-1,2},{-2,1},{-2,-1}};
static int vis[][]=new int[6][5];
static int dep=0,count=0;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int x=sc.nextInt();
int y=sc.nextInt();
vis[x][y]=1;
solve(x,y,2);
if(count==0) {
System.out.println("No solution!");
}
else
{
System.out.println(count);count=0;dep=1;}
}
}
private static void solve(int x, int y, int dep) {
// TODO Auto-generated method stub
for (int i = 0; i<=7; i++) {
int nx=x+move[i][0];
int ny=y+move[i][1];
if(check(nx,ny)){
vis[nx][ny]=dep;
if(dep==20){
count++;
}else
solve(nx,ny,dep+1);
vis[nx][ny]=0;
}
}
}
private static boolean check(int xx, int yy) {
return xx>=1&&xx<=5&&yy>=1&&yy<=4&&vis[xx][yy]==0;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
하나의 수조를 깊이가 가장 낮은 두 갈래 나무로 바꾸다문제 정의: Givena sorted(increasing order) array, write an algorithm to create abinary tree with minimal height. 생각: 이 문제는 비...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.