2021.12.1学习总结

今天早上满课,下午和晚上就刷了vj上的3道栈题主要是边刷边学习,过了一个两个没过。一直在找bug,就是过不了。
过了那个题的题解跟代码。https://vjudge.net/contest/471327#problem/D
思路:两个数组,一个是自然数1到N,一个是你输入的序列,从1开始入栈,接着和输入的序列开始比较,不相同,自然数后移接着下一个入栈,相同就出栈,序列后移,后移之后在和栈里的栈顶相比较,相同就出栈,不相同自然数后移入栈,所有数据执行完后,当栈顶为空则为合法序列,否则不合法。
AC代码:
#include<stdio.h>
#include<string.h>
#define STACKSIZE 110
int push(int mystack[],int x,int top);
int stacktop(int mystack[],int top);
int pop(int mystack[],int top);
int empty(int top);
void hf(int instack[],int outstack[],int n)
{
int mystack[STACKSIZE];
int i,j=0,top=-1;
for(i=0;i<n;i++)
{
top=push(mystack,instack[i],top);
while(empty(top)&&stacktop(mystack,top)outstack[j])
{
j++;
top=pop(mystack,top);
}
}
if(top
-1) printf(“Yes\n”);
else printf(“No\n”);
}
int push(int mystack[],int x,int top)
{

mystack[++top]=x;
return top;

}
int stacktop(int mystack[],int top)
{
return mystack[top];
}
int pop(int mystack[],int top)
{
mystack[top–];
return top;
}
int empty(int top)
{
return top==-1?0:1;
}
int main()
{
int N,i;
int instack[STACKSIZE];
int outstack[STACKSIZE];
while(scanf("%d",&N)&&N!=0)
{

 	memset(instack,0,sizeof instack);
 	memset(outstack,0,sizeof outstack);
 	for(i=0;i<N;i++)
 	instack[i]=i+1;
 	for(i=0;i<N;i++)
 	scanf("%d",&outstack[i]);
 	hf(instack,outstack,N);
 }

}
今天学的很少,找错找了很久一直过不了,那两个没过的代码就不写了,明天过了在写,明天接着学习,加油!睡觉,晚安。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值