Day2总结

· 2026-7-16 17:30:31

T2 题目:计算x的最终值,并判断过程及结果中是否会溢出

结构:使用栈。每一个for会有一个对应的end作为结束标志,最先出现的end对应最后出现的for,和栈“先进后出”性质一致。

状态维护:tot初始为1:每层for循环运行数乘积。

stack stk:目前没有end对应的for的运行数。x记录答案。

步骤:1.add x+=tot,判断是否超2^32-1,若超,输出不可能

 2.for n   tot*=n,stk.push(tot)
 
 3.end     tot/=stk.top()
 
 4.输出答案

难点与易错:

判断溢出这里,有两个难点:

一、add操作时x+tot溢出后究竟是变成负数还是超过Max?
所以将x+tot与Max比较不现实

当x+tot>Max时,x>Max-tot。减法不会溢出,可以实现相同效果

二、tot超了怎么做

tot*n>Max时,tot*n也可能溢出。

当tot*n>Max时,tot>Max/n。除法也不会溢出。

tot的数据范围要扩大,原因是tot超了x不一定会超(没有add的情况),有end时又有可能回到不超的状态。

T5

题目:给一串字符,可以将dot替换成.,将at替换成@。替换后的字符串,有且仅有一个@,@和.均不能出现在答案的首尾. 思路:扫一遍,at不是dot的前缀也不是后缀,不会有既可以换成@又可以换成.的情况。 易错:首尾都不能有.或@

T6 题目:在一串包括()[]的括号中找到合法的括号序列,使它含左中括号数量最多 思路:括号匹配,需要用栈 易错:找到的合法序列中一定要有左中括号。

已修改 2 次查看 举报

0 条评论

目前还没有评论...

Be the first to comment!

返回讨论列表
徐廷蔚
107
通过题目
10
发帖数