【HDU】 1022 Train Problem I
来源:互联网 发布:c语言中与的符号 编辑:程序博客网 时间:2024/05/21 06:56
Train Problem I
- 题目链接
Train Problem I
- 题目大意
就是有一个栈,给定一个初始序列和一个最终序列,求初始序列能否通过一种进栈出栈的方式打到最终序列。
- 题解
就是一个暴搜的问题…数据很小。
用栈的时候需要小心一点不要丢失数据。
- 代码(有些冗长)
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n,hs,ho,ha,way[30],flag;char a[15],s[15],out[15],ans[15];void dfs(int d){ if (d==2*n) { int f=0; for (int i=0;i<n;i++) if (out[i]!=ans[i]) f=1; if (!f) { flag=1; printf("Yes.\n"); for (int i=0;i<2*n;i++) if (way[i]==1) printf("in\n"); else if (way[i]==-1) printf("out\n"); } return ; } if (ha<n) { //in way[d]=1; s[hs++]=a[ha]; ha++; dfs(d+1); if (flag) return ; s[--hs]='\0'; ha--; way[d]=0; } if (hs>0) { //out char c; way[d]=-1; c=s[--hs]; s[hs]='\0'; out[ho++]=c; dfs(d+1); if (flag) return ; out[--ho]='\0'; s[hs++]=c; way[d]=0; }}int main(){ while (scanf("%d",&n)!=EOF) { memset(a,0,sizeof(a)); memset(ans,0,sizeof(ans)); memset(s,0,sizeof(s)); memset(out,0,sizeof(out)); flag=0; scanf("%s%s",a,ans); ha=0; hs=0; ho=0; dfs(0); if (!flag) printf("No.\n"); printf("FINISH\n"); } return 0;}
0 0
- HDU 1022 Train Problem I
- HDU-1022 Train Problem I
- HDU 1022 Train Problem I
- HDU 1022 ( Train Problem I )
- HDU 1022 Train Problem I
- HDU 1022 Train Problem I
- Hdu 1022 - Train Problem I
- HDU-1022:Train Problem I
- hdu 1022 Train Problem I
- hdu 1022 Train Problem I
- hdu-Train Problem I-1022
- hdu 1022 Train Problem I
- hdu 1022 Train Problem I
- hdu 1022 Train Problem I
- HDU 1022 Train Problem I
- hdu 1022 Train Problem I
- hdu 1022 Train Problem I
- HDU 1022Train Problem I
- 如何判断input 中checkbox 中是否勾选
- JavaScript —— JS截取字符串substr 和 substring方法的区别
- Android 二维码生成
- 自定义View学习之12/7(进度条之混合模式)
- 深入分析Java的序列化与反序列化
- 【HDU】 1022 Train Problem I
- android的SDK升级解决方法
- hadoop_2_完全分布式高可用
- [poj 2528] Mayor's posters 线段树+离散化
- PHP 对二维数组进行指定key排序
- 转:C++宏中的“#”与“##”用法
- Android启动安装程序
- System.getenv("TEMP")
- CentOS 7下载地址(ISO文件)