HDU 2153 선인 구 의 잔상 달리기 [물 문제] [뱀 모양 행렬]

2263 단어
선인 구 의 잔상
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5701    Accepted Submission(s): 2604
Problem Description
아름 다운 HDU 에 대학교 3 학년 친구 가 있 습 니 다. 그의 속 도 는 잘 알려 져 있 습 니 다. 100 미 터 를 달 리 는 데 2 초 47 밖 에 걸 리 지 않 았 습 니 다. 그 가 달 리 는 과정 에서 그림자 가 남 을 것 입 니 다. 여러분 은 그 가 누구 인지 궁금 하 시 죠? 그 는 선인 구 라 고 합 니 다. 이름 이 이렇게 된 이상 그의 생각 은 단일 합 니 다. 그 는 항상 한 점 에서 출발 하여 세 번 의 전환 (매번 오른쪽으로 90 °) 을 거 치 는 것 을 좋아 합 니 다.출발점 으로 돌 아 왔 다. 그리고 그 는 매번 돌아 가기 전에 똑 같은 길 을 달 렸 다. 그래서 많은 사람들 이 '1' 로 그의 달리기 출발 의 첫 번 째 잔 영 을 계산한다 면 출발점 으로 돌 아 왔 을 때 그의 잔 영 은 어 땠 을 까?
 
Input
테스트 데이터 가 여러 줄 로 되 어 있 습 니 다. 모든 행위 의 숫자 N (1 < = N < = 10) (0 으로 끝 나 며 0 으로 처리 하지 않 음), 즉 선인 구 는 출발점 으로 돌아 가지 않 았 을 때 N 개의 잔 영 을 남기 고 갑자기 90 ° 우회전 하 는 것 입 니 다.
 
Output
각 그룹의 테스트 데 이 터 는 하나의 결 과 를 출력 하고 잔상 의 계수 비트 길 이 는 3 글자 길이 입 니 다.(물론 N 이 1 이면 그 결과 도 3 글자 의 위 치 를 차지한다)
 
Sample Input
4
 
Sample Output
  1  2  3  4
 12        5
 11        6
 10  9  8  7
 
Author
Guner
 
Source
2008 정보 공학 대학 합숙 훈련 팀 - 선발 전
제목: 왼쪽 상단 부터 시계 방향 으로 뱀 모양 으로 1, 2, 3,..., N 을 출력 한다.
사고: 4 중 while 순환, 숫자 를 저장 하고 아웃 여 부 를 판단 합 니 다.
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;

int a[12][12];

int main()
{
    int N;
    while(cin >> N && N)
    {
        memset(a,0,sizeof(a));
        int tot = 1;
        int x = 1,y = 1;
        while(x == 1 && y <= N)
            a[x][y++] = tot++;
        x++,y--;
        while(x <= N && y == N)
            a[x++][y] = tot++;
        x--,y--;
        while(x == N && y >= 1)
            a[x][y--] = tot++;
        x--,y++;
        while(y == 1 && x >= 2)
            a[x--][y] = tot++;
        for(int i = 1; i <= N; ++i)
        {
            for(int j = 1; j <= N; ++j)
            {
                if(a[i][j] == 0)
                    cout << "   ";
                else
                    printf("%3d",a[i][j]);
            }
            cout << endl;
        }

    }

    return 0;
}

좋은 웹페이지 즐겨찾기