• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
mengxm
博客园    首页    新随笔    联系   管理    订阅  订阅

poj1363

http://poj.org/problem?id=1363

通过栈模拟,检验有无可能实现输入和输出

1 #include<stdio.h>
2  int sum;
3 int *in,*out,*stack;
4 int inpoint,outpoint,stackpoint;
5 int is_ok()
6 {
7 inpoint=-1,outpoint=0,stackpoint=-1;
8 while(outpoint<sum)
9 {
10 if(stackpoint>-1)
11 {
12 while(out[outpoint]!=stack[stackpoint]&&inpoint<sum)
13 stack[++stackpoint]=in[++inpoint];
14 if(inpoint<sum)
15 {
16 outpoint++;
17 stackpoint--;
18 }
19 else return 0;
20 }
21 else
22 {
23 if(inpoint<sum) stack[++stackpoint]=in[++inpoint];
24 else return 0;
25 }
26 }
27 return 1;
28 }
29 void ini()
30 {
31 while(scanf("%d",&sum)==1&&sum)
32 {
33 in=new int [sum];
34 out=new int [sum];
35 stack=new int [sum];
36 while(scanf("%d",&out[0])==1&&out[0])
37 {
38 for(int i=1;i<sum;i++) scanf("%d",&out[i]);
39 for(int i=1;i<=sum;i++) in[i-1]=i;
40 if(is_ok()) printf("Yes\n");
41 else printf("No\n");
42 }
43 printf("\n");
44 }
45 }
46 int main()
47 {
48 ini();
49 return 0;
50 }
posted @ 2011-06-09 23:49  mengxm  阅读(343)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3