07

严蔚敏视频 笔记07

习题课后思考题

1.2 1.3 1.4 2.4.2.5.2.8 2.9 3.2 3.6 3.8 3.12 3.15 4.2 4.4 4.7 4.11

 

问题的解决

 

例一 数制转换

算法基于原理:N = (N div d) * d + N mod d

 

十进制转八进制

void conversion() {

    InitStack(S);

    scanf("%d",n);

    while(N) {

        Push(S,N % 8);

        N=N/8;

    }

    while(!StackEmpty(S)) {

        Pop(S,e);

        printf("%d",e);

    }

}

 

例二 括号匹配的检验

() [] {}

“期待的急迫程度”

 

[ ( [ ] [ ] } ]

1 2 3 4 5 6 7 8

 

三种不正确的情形:

到来的右括弧不是所“期待”的

到来的是“不速之客”

直到结束也没到来所“期待”的

 

算法设计思想:

1.凡出现左括弧则进栈

2.凡出现右括弧,首先检查栈是否空

若栈空则表明右括弧多了

否则和栈顶元素比较

若相匹配则左括弧出栈

否则不匹配

3.表达式检验结束时

若栈空则匹配正确

否则表明左括弧多了

 

Status matching(string& exp);

 

例三 行编辑程序问题

 

无光标

 

输入缓冲区 接受一行字符 逐行存储

假设 退格符 # 退行符@

 

缓冲区用栈来实现

 

例四 迷宫求解

 

通常是“穷举求解”

 

当前位置

探索 下一位置

顺时针方位 还不能往回走

记录下路径

 

求解基本思想:

1.若当前位置“可通”,纳入路径,继续前进

2.若当前位置“不可通”,则后退,换向探索

3.若四周均“不可通”,则从路径中删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值