알고리즘 기초 편의 궁 거 법 실례 -- 숫자 쓰기 게임

초등학교 올림픽 문제 에서 숫자 를 쓰 는 게임 을 자주 볼 수 있다. 그 중에서 모든 한 자 는 서로 다른 숫자 를 나타 내 고 이런 한 자 는 각각 어떤 숫자 를 대표 하 는 지 작성 해 야 하 며 마지막 에 산식 을 성립 시 켜 야 한다.그때 이런 문 제 를 가장 귀 찮 게 풀 었 던 것 을 기억 하 세 요. 지금 우 리 는 프로 그래 밍 사상 으로 해결 하고 있 습 니 다. 이렇게 계산 하면 훨씬 빠 릅 니 다.앞으로 오 수 를 배 우 는 꼬마 친구 에 게 자랑 할 수 있 을 거 야.
제목:
알고리즘 설명 문제
X        계산 하 다
————————
    문제
각 한 자 는 0 ~ 9 의 한 정 수 를 나타 내 고 서로 다른 한자 간 에 대표 하 는 정 수 는 다르다. 이 한자 들 이 표시 하 는 정 수 를 찾 아 산식 을 성립 시 켜 야 한다.
분석:
이런 유형의 문 제 는 두 가지 특징 이 있다. 하 나 는 불규칙 성 이다. 즉, 우 리 는 일정한 규칙 에 따라 많은 후보 답안 에서 정 해 를 찾 을 수 없다 는 것 이다.둘째, 가난 성 이 있다. 즉, 이런 문 제 는 계 산 량 에 있어 서 항상 상계 가 있 거나 상계 범위 내 에서 정 해 를 얻 을 수 있 거나 정 해 가 존재 하지 않 는 다 는 것 이다.
모든 한자 에 변 수 를 설정 하고 변수 범 위 를 구분 합 니 다.
한자.
변수 기호
변수 범위
계산 하 다
i
1~9
법.
j
0~9
묘사 하 다.
k
0~9
서술 하 다.
l
0~9
제목.
m
1~9
그리고 조건 이 충 족 될 때 까지 모든 가능성 을 궁리 한다.
코드:
public class fillNum {
	private long multi1 = 0;//     
	private long multi2 = 0;//    
	private long result = 0;//    
	private boolean isSolve = false;//                  
	
	//      
	public void excute() {
		for(int i = 1; i <= 9; i++) {
			for(int j = 0; j <= 9; j++) {
				for(int k = 0; k <= 9; k++) {
					for(int l = 0; l <= 9; l++) {
						for(int m = 1; m <= 9; m++) {
							multi1 = i * 10000 + j * 1000 + k * 100 + l * 10 + m;
							multi2 = (long)i;
							result = m * 100000 + m * 10000 + m * 1000 + m * 100 + m * 10 + m;
							if((multi1 * multi2) == result) {
								isSolve = true;
								return;
							}
						}
					}
				}
			}
		}
		isSolve = false;
	}
	
	//      
	public void print() {
		if(isSolve) {
			System.out.println("  " + multi1);
			System.out.println("X     " + multi2);
			System.out.println("--------");
			System.out.println(" " + result);
		}
		else {
			System.out.println("           ");
		}
	}
}

주 함 수 는 다음 과 같 습 니 다:
public static void main(String[] args) {
		fillNum fn = new fillNum();
		fn.excute();
		fn.print();
	}

실행 완료 후 출력 결과:
   79365 X         7 ------------  555555
동생 은 재능 이 없어 서 순 전 히 풋내기 일 뿐 더 우수한 아름 다운 알고리즘 이 있 는 지 모르겠다.대신 들 에 게 더 좋 은 알고리즘 이 있다 면 가르쳐 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기