tyvj/joyoi 1336 火车进栈
2024-10-21 03:16:16
比原题水了很多(因为原题要高精度)
输出字典序前20种出栈序列。
其实是贪心题:我们每次确定一个出栈的数。
当栈里有数时,字典序显然比从后面拿数要小,所以先搜这个。
之后依次搜后面队列里的数,因为字典序依次增大。
有20个答案了就exit(0)。
然后就一遍AC了!!
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = ; int n, ans;
int l[N], r[N], d[N], tl, tr, td; void DFS(int k) {
if(k == n) {
ans++;
for(int i = ; i < n; i++) {
printf("%d", l[i]);
}
printf("%d", td ? d[td] : r[tr]);
if(ans == ) exit();
printf("\n");
return;
}
if(td) {
l[++tl] = d[td--];
DFS(k + );
d[++td] = l[tl--];
}
if(!tr) return;
int temp = tr;
l[++tl] = r[tr--];
while(tr) {
DFS(k + );
d[++td] = l[tl];
l[tl] = r[tr--];
}
DFS(k + );
/// 复原
tr = temp;
tl--;
td -= (temp - );
return;
} int main() {
scanf("%d", &n);
for(int i = n; i >= ; i--) {
r[i] = n - i + ;
}
tr = n;
DFS();
return ;
}
AC代码
最新文章
- [LeetCode] Search for a Range 搜索一个范围
- Visual C++ 的代码折叠
- Power BI for Office 365介绍
- Javac不是内部或外部指令
- zepto - scrollLeft
- C#常用功能函数小结(.NET 4.5)
- zjuoj 3603 Draw Something Cheat
- 给VPS装桌面
- Why Study JavaScript?
- Cocos2d-x内存管理解说在ios开发中
- 基于PDO的简易ORM
- 安装linux下面用来配置网络,防火墙,系统服务等设置的图形小工具Setup
- 【java】字节码操作技术
- Scala编程基础
- JVM自动内存管理机制——Java内存区域(下)
- python 实现线程安全的单例模式
- Unity获取插件所在目录的巧妙方法
- android studio 3.0 安装配置
- 【Java】JVM(一)、Java内存区域
- BZOJ 3876: [Ahoi2014]支线剧情 带下界的费用流