한 노 타 (비 귀속)
11084 단어 알고리즘
탑 자리 a, b, c 가 삼각형 으로 배열 되 어 있다 고 가정 하면 a - > b - > c - > a 는 시계 방향 순환 을 구성한다.원반 을 이동 하 는 과정 에서 홀수 로 이동 하면 가장 작은 원반 을 시계 방향 으로 다음 탑 자리 로 이동 시 킵 니 다. 짝수 로 이동 하면 최소 원반 이 움 직 이지 않 고 다른 두 탑 자리 사이 에 작은 원반 을 다른 탑 자리 로 이동 시 킵 니 다. 그러나 이런 알고리즘 의 목적 탑 자 리 는 확실 하지 않 습 니 다. 원반 수량 n 이 홀수 일 때.목적 탑 자 리 는 b 이 고 짝수 는 c 이 므 로 n 의 짝수 에 따라 조금 바 꿔 야 한다.
#include
#include
#include
using namespace std;
const int INF = 0x3f3f3f3f;
typedef long long LL;
const int maxn = 100+5;
int n;
stack<int> a[3];// 3
char s[3] = {'a', 'b', 'c'};
// x --->y
bool mov(int x, int y){
if(a[x].empty()) return false;
if(!a[y].empty()&&a[x].top() > a[y].top()) return false;
a[y].push(a[x].top());
a[x].pop();
printf("%c -> %c
", s[x], s[y]);
return true;
}
int main()
{
int cnt;
while(scanf("%d",&n) == 1&&n){
for(int i = n-1; i >= 0; --i) a[0].push(i);
if(n%2 == 1) swap(s[1], s[2]);
cnt = 0;
while(++cnt){
mov((cnt-1)%3, cnt%3);
if(!mov((cnt-1)%3, (cnt+1)%3)&&!mov((cnt+1)%3, (cnt-1)%3))
break;
}
}
fclose(stdin);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.