알고리즘 기초 편의 궁 거 법 실례 -- 숫자 쓰기 게임
2274 단어 알고리즘 분석알고리즘 인 스 턴 스
제목:
알고리즘 설명 문제
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
동생 은 재능 이 없어 서 순 전 히 풋내기 일 뿐 더 우수한 아름 다운 알고리즘 이 있 는 지 모르겠다.대신 들 에 게 더 좋 은 알고리즘 이 있다 면 가르쳐 주 십시오.감사합니다!