本文共 850 字,大约阅读时间需要 2 分钟。
这个代码使用C++编写,主要功能是判断输入的一组数字是否是严格按1,2,3,…的顺序排列。输入的数字通过栈进行判断,确保每个数字按照预期顺序出现。
数据准备
数组num
预先被初始化为1到1000的自然数。接着,程序等待用户输入数字n,表示接下来要读取n个数字。输入数字处理
读取数字n后,开始读取接下来的n个数字存入数组a
中。程序确保每次读取一个数字,依次处理。栈初始化
栈被用于存储数字,确保每个数字严格按照顺序出现。初始时,栈底部存放1,随后依次存放2、3等数字。数位对比
使用两个循环,一个外层控制数字处理,一个内层从栈顶检查当前数字是否正确。若匹配则弹出栈并继续检查下一个数字,若不匹配则继续向上读取并存入栈中。最终判断
当所有数字处理完毕后,检查栈是否为空。如果所有数字都正确匹配栈中的顺序,输出"Yes"并清空栈;否则,输出"No"。代码结构
代码结构包括主函数main()
,其中初始化数组num
,读取输入n,读取接下来的n个数字存入数组a
,然后开始与栈的操作。初始化栈
栈初始化时,先把1推入,作为递增序列的起始点。数字处理循环
内部有一个while
循环,处理所有的数字。通过k
变量跟踪当前处理的数字位置,t
变量控制下一个预期数字的位置。栈顶检查
每次从栈顶查看当前顶部的数字是否与当前处理数字a[k]
相符。相符则弹出栈,处理下一个数字;否则,压栈继续处理。结果判断
当所有数字处理完毕后,栈为空说明所有数字都正确,如果k
等于n+1,说明所有数字都被正确匹配。k
的位置,正确判断输出"Yes"或"No"。这个代码通过栈结构,确保输入数字严格按照1,2,3,…的顺序排列,能够有效判断输入是否符合预期。这种方法简洁高效,易于实现和理解。
转载地址:http://ftnez.baihongyu.com/