zoukankan      html  css  js  c++  java
  • POJ 1363 Rails

    解题思路:

    本题是一道模拟,我们先构造一个栈,将1~n入栈,并用一个标记来表示当前比较到了所给序列的那一个元素.如果要入栈的元素与我们当前所标记的元素相同,则比较栈顶与我们下一个要标记到的元素,直到栈为空或这两个元素不相同为止,更新标记,接着循环直到1~n全部入栈.如果栈为空,则说明"Yes",如果不为空,我们就比较栈顶和标记元素,如果相同,就弹出栈顶;最后如果能做到栈为空则说明"Yes",否则为"No".

    AC代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <stack>
     5 
     6 using namespace std;
     7 const int N = 1e5+5;
     8 
     9 int n, a[N];
    10 
    11 bool solve() {
    12     stack<int> st;
    13     int p = 1;//p为标记 
    14     for(int i=1; i<=n; i++) {
    15         while(true) {
    16             if(p <= n && a[i] == p) {
    17                 p++;
    18                 break;
    19             }
    20             else if(!st.empty() && a[i] == st.top()) {
    21                 st.pop();
    22                 break;
    23             }
    24             else {
    25                 if(p <= n) st.push(p++);
    26                 else return false;
    27             }
    28         }
    29     }
    30     return true;
    31 }
    32 
    33 int main() {
    34     while(cin >> n && n) {
    35         while(true) {
    36             cin >> a[1];
    37             if(a[1] == 0) break;
    38             for(int i=2; i<=n; i++) cin >> a[i];
    39             cout << (solve() ? "Yes" : "No") << "
    ";
    40         }
    41         puts("");
    42     }
    43 }
  • 相关阅读:
    谈对信息增益与决策树的理解
    k近邻法
    感知机相关难点细解
    点到空间中面的距离
    统计学习方法中的标注问题
    Hoeffding不等式与泛化误差上界
    经验风险与期望风险
    先验概率与后验概率
    spring和springboot常用注解总结
    多环境下读取不同的配置文件
  • 原文地址:https://www.cnblogs.com/lipeiyi520/p/10666792.html
Copyright © 2011-2022 走看看