NYOJ 150 Train Problem I 【栈】

本文介绍了一个基于栈的数据结构解决最大数问题的算法实现。通过输入两组字符串序列,利用栈的思想来判断是否可以通过特定操作使得第一序列转换为第二序列。此问题涉及到栈的基本操作及序列匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个题做得有点久呀!!!记的是和大冰最先开始搞这个题的,却是最后一个ac的。。。⊙﹏⊙。。这个题的思路就是oj上寻找最大数那个题的思路和栈的思想。。

#include<stdio.h> char yi[100]; int k=0; void get(int n) { if(n==1) yi[k++]='1';//进 else if(n==0) { yi[k++]='1'; yi[k++]='0';//出 } else yi[k++]='0'; } int main() { int a,b,c,n,m; while(scanf("%d",&n)!=EOF) { char ok1[15],ok2[15]; int top=-1; int ac[15]={0};//标记是否已经出去。。 k=0;c=0; scanf("%s%s",ok1,ok2); for(a=0;a<n;a++) { b=a; if(ok1[a]!=ok2[c]) { get(1); top++; } else { get(0); ac[a]=1; c++; while(b>0) { b--; if(ac[b]==1) continue; if(ok1[b]==ok2[c]) { get(2); ac[b]=1; c++; top--; } else break; } } } if(top!=-1) printf("No.\n"); else { printf("Yes.\n"); for(a=0;a<k;a++) if(yi[a]=='1') printf("in\n"); else printf("out\n"); } printf("FINISH\n"); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值