'2010/05/03'에 해당되는 글 2건

  1. 2010.05.03 지뢰찾기
  2. 2010.05.03 3n+1

각 칸에는 최대 여덟 개의 인접한 칸이 있을 수 있다. 아래에서 왼족에 있는 4*4지뢰밭에는 두 개가 있으며 각각은 '*'문자로 표시되어 있다. 이 지뢰밭을 방금 설명한 힌트 숫자로 표기하면 오른쪽에 있는 것과 같은 필드가 만들어진다.


입력                  출력
4 4 
*...                   *100
....                    2210
.*..                   1*10
....                    1110




일단 허접한 알고리즘으로 하긴했는데

두가지 문제점이 있다.

1. 해당 값이 * 일 경우 주변 값도 * 이면 *에 +1을 하지 못하도록 하여야한다.

2. 위에서 . * .
         -> . . . 가장 왼쪽에 점의 경우에 그 점이 지뢰라고하면 그 주위에 값들이 +1을 하게 알고리즘이 구성되었는데 저 위치 같은 경우에는 왼쪽에 아무것도 없는 벽이라는것을 표현해줘야한다. 그것이 안되어서 상단 오른쪽에 값이 엉뚱하게 들어가 버린다.


             . * .

'프로그래밍 기초 > 자료구조 & 알고리즘' 카테고리의 다른 글

LCD 디스플레이  (0) 2010.05.13
여행(The Trip)  (0) 2010.05.11
3n+1  (0) 2010.05.03
스케줄링 (라운드 로빈)  (0) 2009.12.17
병합정렬 & 퀵 정렬 비교 및 기수정렬  (0) 2009.12.17
Posted by 아몰라

이러한 알고리즘이 있다.

n= 10 이면

10 ,5, 16, 8, 4, 2, 1    cnt = 7 (사이클길이)

짝수이면 n/2 로 나누고 , 홀수이면 3n+1 로 한다.

이 알고리즘을 적용을하면 결국에 n 은 1에 이르게 된다.

이 가설은 적어도 1000000까지의 정수에 대해서는 참이라고 한다.


이제부터 문제다.

어떠한  두 정수를 입력받는다.

0~1000000까지만 값을 입력받을수 있도록 하고

예를 들어 1 , 10 을 입력받는다 그러면 1 ~10 사이에 대해 최대 사이클 길이를 구하면 된다.

입력예     출력 예
1 10        1 10 20
100 200   100 200 125


먼저 입력 받는 수를 a와 b 라고 하고 a에 대한 알고리즘을 구했고 그 다음에 a+1 에 대한 결과와 비교하고

또 a+1과 계속 비교해가면서 b까지 비교해서 가장 큰 최대사이클을 구하는 방식으로 하였다.

생각보다 알고리즘 문제 재밌는거 같다 ㅋㅋㅋ

'프로그래밍 기초 > 자료구조 & 알고리즘' 카테고리의 다른 글

여행(The Trip)  (0) 2010.05.11
지뢰찾기  (0) 2010.05.03
스케줄링 (라운드 로빈)  (0) 2009.12.17
병합정렬 & 퀵 정렬 비교 및 기수정렬  (0) 2009.12.17
연결리스트더미有  (0) 2009.12.16
Posted by 아몰라
이전버튼 1 이전버튼