알고리즘 훈련소 1 - 1 - 1

3682 단어
제목:
창고.
묘사 하 다.
하나의 스 택 을 실현 하여 다음 과 같은 기능 을 완성 합 니 다.
입 점
출고
스 택 의 위치 Y 가 누구 인지 물 어보 세 요.
처음에는 창고 가 비 었 다.스 택 의 위 치 는 1 부터 시작 합 니 다.
입력
첫 번 째 줄 의 정수 n 은 조작 개 수 를 나타 낸다.
다음 n 줄, 각 줄 의 첫 번 째 숫자 는 조작 을 표시 합 니 다 (설명 참조).
4. 567917. 숫자 1 이면 다음 문자열 X 가 있 는데 X 를 스 택 에 넣 는 것 을 나타 낸다
4. 567917. 숫자 2 라면 스 택 지붕 (스 택 이 비어 있 지 않 음 을 보증 합 니 다) 을 팝 업 하고 스 택 을 출력 하 는 이 사람 을 표시 합 니 다
4. 567917. 숫자 3 이면 그 다음 에 정수 Y 가 있 는데 스 택 의 위치 Y 가 누구 인지 물 어보 고 이름 을 출력 합 니 다
출력
모든 조작 2 와 조작 3 을 한 줄 씩 출력 합 니 다.
입력 샘플
11 1 a 1 b 1 c 3 1 3 2 3 3 2 1 d 3 1 3 2 3 3
출력 샘플
a b c c a b d
제한 하 다.
30% 의 데이터 에 대해 1 ≤ n ≤ 2000;
다른 30% 의 데이터 에 대해 3 을 조작 하지 않 았 습 니 다.
100% 의 데이터 에 대하 여 1 ≤ n ≤ 100000.
데이터 에 나타 난 문자열 은 26 개의 소문 자 (빈 칸 등분 자 없 음) 만 포함 하고 길 이 는 15 를 초과 하지 않 습 니 다.
문자열 이 중 복 될 수 있 습 니 다.현실 적 으로 이름 이 바 뀔 수 있 듯 이.
시간: 2 sec
공간: 256 MB
[창고 에 들 어 가 는 것 과 나 가 는 것 은 모두 창고 지붕 을 조작 하고 있다.]
[n 크기 의 배열 을 열 고 스 택 지붕 의 위 치 를 기록 합 니 다. 스 택 에 들 어가 서 스 택 을 나 오 는 것 은 이 스 택 의 지붕 을 1 로 줄 이 는 것 입 니 다. 스 택 의 한 위치 Y 는 배열 에 해당 하 는 아래 표 시 는 Y 입 니 다.]
c + + 버 전
#include 
/*define   :1.     :#define            :#define MAXNUM 99999
                2.#define    (   )       :#define add(x, y) (x + y),          add  ,  
*/
#define N 100000
using namespace std;
//  :              ?
//  static               。      。
//       (  static )    0,      。
//     top n 0.

string Stack[N];//      
int top,n;//    top——  

void push(string name) {
    //  
    //++top      
    // top+1      name
    Stack[++top] = name;
}

string pop() {
    //  
    //     -1
    //               
    //  :       ,            ?
    return Stack[top--];
}
string query(int index) {
    //  
    //           
    return Stack[index];
}

int main() {
    int n;//      
    string elem;
    cin >> n;
    for (; n--; ) {
        int num;
        cin >>num;
        if (num == 1) {
            cin >> elem;
            push(elem);
        } else if (num == 2) {
            cout << pop() << endl;
        } else {
            int index;
            cin >> index;
            cout << query(index) << endl;
        }
    }
    return 0;
}


자바 버 전
import java.util.Scanner;

/*      : */

public class Main {

    public static void main(String[] args) {
        int n;
        int num;
        String input;
        String x;

        Scanner scanner = new Scanner(System.in);
        n = Integer.parseInt(scanner.next());
        for (int i = 0; i < n; i++){
            num = Integer.parseInt(scanner.next());
            if (num == 1){
                input = scanner.next();
                stack.Push(input);
            }
            else if (num == 2){
                x = stack.Pop();
                System.out.println(x);
            }
            else{
                int index;
                index = Integer.parseInt(scanner.next());
                System.out.println(stack.GetElem(index));
            }


        }
    }


}

class stack{
    private static int Maxsize = 10000;
    private static int top = -1;
    private static String [] stack = new String[Maxsize];

    public static String GetElem(int index) {
        return stack[index-1];
    }
    public static String Pop() {
        String elem = null;
        if (top != -1){
            elem = stack[top];
            top--;
        }
        return elem;
    }

    public static void Push(String input) {
        if (top != Maxsize - 1){
            top += 1;
            stack[top] = input;
        }
    }
}

좋은 웹페이지 즐겨찾기