pat 1051
来源:互联网 发布:极客学院php就业班视频 编辑:程序博客网 时间:2024/05/01 01:24
a[i] = 0 未进stack
a[i] = 1 已在stack
a[i] = 2 已出stack
正确的两种情况
1.若s.top == sequence[i] pop之
2.若s.top != sequence[i] 将小于sequence[i]的且未在stack内,也未出stack的push进去,并且s.size < capacity
#include<stdio.h>#include<stack>using namespace std;bool CheckStack(int sequence[], int n, int capacity){ int *a = new int[n + 1]; int i,j; for (i = 1; i <= n; i++) a[i] = 0; stack<int> s; int flag; for (i = 0; i < n; i++){ flag = 0; if (s.size() == 0){ for (j = 1; j <= sequence[i]; j++) if (!a[j]){ a[j] = 1; s.push(j); } if (s.size() > capacity) break; } if (s.top() == sequence[i]){ s.pop(); a[sequence[i]] = 2; flag = 1; } else if (s.top() != sequence[i] && a[sequence[i]] == 0){ for (j = 1; j <= sequence[i]; j++) if (!a[j]){ a[j] = 1; s.push(j); } if (s.size() > capacity) break; s.pop(); a[sequence[i]] = 2; flag = 1; } if (!flag) break; } if (i == n) return true; else return false;}int main(){ freopen("1.in", "r", stdin); int n, times, capacity; scanf("%d%d%d", &capacity, &n, ×); int *a = new int[n]; int i; while (times--){ for (i = 0; i < n; i++) scanf("%d", &a[i]); bool flag = CheckStack(a, n, capacity); if (flag) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- pat 1051
- pat 1051
- pat 1051
- PAT 1051
- PAT 1051
- pat 1051 pop sequence
- PAT 1051-1060 题解
- pat advanced 1051
- PAT Advanced Level 1051
- PAT(甲级)1051
- 浙大PAT 1051
- *浙大PAT甲级 1051
- PAT乙级1051
- pat-bl-1051
- PAT甲级1051
- pat乙级 1051-1055
- PAT A 1051
- PAT 1051 pop Sequence
- Android App 性能优化(一)
- JS(四)DOM模型之属性样式
- java 设置代理网络
- hdoj 1021 Fibonacci Again
- 为什么一定要加final
- pat 1051
- 执行make menucofig发生错误“Unable to find the ncurses libraries or the required header files”的解决方法
- 常见的手机配置处置
- 为Mybatis根据bean生成dao和xml
- acm2005
- List新增数据时,事件接收器回触发新增、更新事件
- 汉澳sinox为中国提供完善的操作系统解决方案
- 关于应用第一次安装打开,点击home键,然后再点击图标打开时,重复打开页面问题
- Mac下终端常用命令符的使用