본문내용
프로그램 언어 발표
발표 주제 : 하노이 탑
하노이의 탑이란?
하노이의 탑(Tower of Hanoi)은 퍼즐의 일종이다.
개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 판이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원이 작은 것이 위에 있도록 순서대로 쌓여 있다.
게임의 목적은 다음 두 가지 조건을 만족시키면 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것이다.
1. 한 번에 하나의 원판만 옮길 수 있다.
2. 큰 원판이 작은 원판 위에 있어서는 안 된다.
프로그램 구성
하노이 탑 실행 화면 1
하노이 탑 실행 화면 2
하노이 탑 실행 화면 3
하노이 탑 실행 화면 4
프로그램 코딩 1
#include
#include //system("cls") 함수
#include //getch() 함수
#define LIMIT 10 //최대 층수를 지정
void background(int Base[][LIMIT], int start); //초기 배경화면을 그려준다.
void draw_class(int Base[][LIMIT]); // 탑을 그려준다.
void f_block(int cnt); //블럭을 그려준다.
void move(int Base[][LIMIT]); // 탑을 다른 곳으로 옮긴다.
int end(int Base[][LIMIT], int end); // 완성 했는지 확인한다.
프로그램 코딩 2
void main(){
int base[3][LIMIT]={0}; // 각 틀 3개에 10층까지 쌓을 수 있는 공간 저장
int start; //시작하는 층수
int cnt=0; //옮긴 횟수를 저장한다.
while(1){ // 초기 값 제어
printf("층 수 : ");
scanf("%d", &start);
fflush(stdin); //입력 받고 남은 값을 지워준다.
if( start >= LIMIT ) printf(" 층수를 다시 정해주세요 \n");
else break;
}
background(base, start); //초기화면 출력.
while( !end(base, start) ){
move(base,start);
draw_class(base,start); //변한 층수 그려준다.
cnt++;
}
printf(" 최단 움직임 횟수 : %d \n", start*start-1); // 공식 층수의 제곱 -1
printf(" 내가 움직인 횟수 : %d \n", cnt);
발표 주제 : 하노이 탑
하노이의 탑이란?
하노이의 탑(Tower of Hanoi)은 퍼즐의 일종이다.
개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 판이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원이 작은 것이 위에 있도록 순서대로 쌓여 있다.
게임의 목적은 다음 두 가지 조건을 만족시키면 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것이다.
1. 한 번에 하나의 원판만 옮길 수 있다.
2. 큰 원판이 작은 원판 위에 있어서는 안 된다.
프로그램 구성
하노이 탑 실행 화면 1
하노이 탑 실행 화면 2
하노이 탑 실행 화면 3
하노이 탑 실행 화면 4
프로그램 코딩 1
#include
#include
#include
#define LIMIT 10 //최대 층수를 지정
void background(int Base[][LIMIT], int start); //초기 배경화면을 그려준다.
void draw_class(int Base[][LIMIT]); // 탑을 그려준다.
void f_block(int cnt); //블럭을 그려준다.
void move(int Base[][LIMIT]); // 탑을 다른 곳으로 옮긴다.
int end(int Base[][LIMIT], int end); // 완성 했는지 확인한다.
프로그램 코딩 2
void main(){
int base[3][LIMIT]={0}; // 각 틀 3개에 10층까지 쌓을 수 있는 공간 저장
int start; //시작하는 층수
int cnt=0; //옮긴 횟수를 저장한다.
while(1){ // 초기 값 제어
printf("층 수 : ");
scanf("%d", &start);
fflush(stdin); //입력 받고 남은 값을 지워준다.
if( start >= LIMIT ) printf(" 층수를 다시 정해주세요 \n");
else break;
}
background(base, start); //초기화면 출력.
while( !end(base, start) ){
move(base,start);
draw_class(base,start); //변한 층수 그려준다.
cnt++;
}
printf(" 최단 움직임 횟수 : %d \n", start*start-1); // 공식 층수의 제곱 -1
printf(" 내가 움직인 횟수 : %d \n", cnt);
추천자료
- [경영전략]체험 방식으로 중국어를 배우자 - 이얼싼 중국체험 어학원
- [경영정보시스템]`세계시장에서의 i-Mode
- 기업의 해외진출 성공사례(남영L&F)
- 모랫말아이들을 읽고
- 미래 사회에서 사용될 새로운 개념의 인터페이스
- [현대자동차]현대자동차의 현황과 마케팅 전략 및 고객만족도 분석(기업 소개, 자동차시장 소...
- [소비자행동]현대자동차의 기업현황과 마케팅전략 및 고객만족도 분석 (A+리포트)
- [마케팅조사]프리미엄 초콜렛 '드림카카오' 마케팅전략 분석(리포트)
- 태권도 도장의 마케팅 전략
- [스포츠심리학][스포츠][심리학][심리][스포츠심리]스포츠심리학의 정의, 스포츠심리학의 분...
- 인문학 콘서트를 읽고 - 시대가 바뀌어도 변하지않는 삶의 가치
- 성숙주의와 행동주의 이론
- 세계지적재산보호, 발전 및 정보의 보고 WIPO(World Intellectual Property Organization)
- [화공실험] 하이시스(HYSYS) 이용한 공정 시뮬레이션 SIMULATION 예비 : n-Heptane 추출하고 ...