ACM/ICPC 之 暴力打表(求解欧拉回路)-编码(POJ1780)
///找到一个数字序列包含所有n位数(连续)一次且仅一次
///暴力打表
///Time:141Ms Memory:2260K
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; #define MAX 1000010 bool v[MAX];
char num[6][MAX]; int main()
{
//freopen("in.txt", "r", stdin);
for(int t = 1; t <= 6; t++)
{
//初始化
memset(v, false, sizeof(v));
int len = t-1, mod = 1;
for(int i = 1; i <= t; i++)
mod *= 10; //mod:取模数
len += mod; //输出总数
for(int i = 0; i < t; i++)
num[t-1][i] = '0'; int cur = 0;
v[cur] = true;
for(int i = t; i < len; i++)
{
int j = 0; //向后一位试探0-9
for(; j < 10; j++)
{
int last = (cur * 10 + j) % mod;
if(!v[last]){ //标识
cur = last;
v[cur] = true;
break;
}
}
if(j == 10){ //试探未果
num[t-1][--i]++; //回推一位+1
v[cur] = false; //取消已有标识
while(num[t-1][i] == '0' + 10 || v[cur+1]) //超出十进制或已标识
{
if(num[t-1][i] != '0' + 10 && v[cur + 1]){ //仅仅已标识
num[t-1][i]++;
cur++;
continue;
}
i--; //否则继续回推+1
cur = ((num[t-1][i-t+1] - '0') * mod + cur)/10;
v[cur] = false;
num[t-1][i]++;
}
cur++;
continue;
}
else num[t-1][i] = '0' + j;
}
} int n;
while(scanf("%d", &n), n)
printf("%s\n", num[n-1]);
return 0;
}
ACM/ICPC 之 暴力打表(求解欧拉回路)-编码(POJ1780)的更多相关文章
- Codeforces Round #445 A. ACM ICPC【暴力】
A. ACM ICPC time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)
这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...
- ACM/ICPC 之 数据结构-邻接表+DP+队列+拓扑排序(TSH OJ-旅行商TSP)
做这道题感觉异常激动,因为在下第一次接触拓扑排序啊= =,而且看了看解释,猛然发现此题可以用DP优化,然后一次A掉所有样例,整个人激动坏了,哇咔咔咔咔咔咔咔~ 咔咔~哎呀,笑岔了- -|| 旅行商(T ...
- ACM/ICPC 之 DFS求解欧拉回路+打表(POJ1392)
本题可以通过全部n位二进制数作点,而后可按照某点A的末位数与某点B的首位数相等来建立A->B有向边,以此构图,改有向图则是一个有向欧拉回路,以下我利用DFS暴力求解该欧拉回路得到的字典序最小的路 ...
- 2016 ACM/ICPC Asia Regional Qingdao Online 1001/HDU5878 打表二分
I Count Two Three Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用
转载请声明出处:http://www.cnblogs.com/kevince/p/3887827.html ——By Kevince 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这 ...
- Codeforces 890A - ACM ICPC 暴力
A. ACM ICPCtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputst ...
- 2016 ACM/ICPC Asia Regional Qingdao Online(2016ACM青岛网络赛部分题解)
2016 ACM/ICPC Asia Regional Qingdao Online(部分题解) 5878---I Count Two Three http://acm.hdu.edu.cn/show ...
- 2017 ACM ICPC Asia Regional - Daejeon
2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...
随机推荐
- 一个Struts2的实例
对Web应用程序而言,需要跨越HTTP协议的两个障碍——无状态和基于文本. 在没有使用struts的时候,你会有一个很真切的体会,就是如何把html页面上的数据提交给后台处理,以什么格式提交? 这是个 ...
- 几乎所有的html + css 内容的编写, 都可以通过emmet来写
在今后的html编写中, 强迫 / 必须 使用 emmet来编写html代码了 !!!! 只使用zen coding, 只使用emmet 来编写, 再也不用以前的那种移动过去移动过来的 写法: 原始的 ...
- PHP利用Curl实现多线程抓取网页和下载文件
PHP 利用 Curl 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,一般采集 数据可以利用 PHPquery ...
- Genymotion启动时出现错误virtualization engine not found
打开VirtualBox,管理-全局设定,网络,仅主机“Host-only”网络,需要的设置如下
- gitlab一键安装 (转)
原文地址:http://www.2cto.com/os/201411/353292.html 0 简介bitnami和gitlab bitnami BitNami是一个开源项目,该项目产生的开源软件包 ...
- HDOJ 4750 Count The Pairs
按边长从小到大排序...再逐个加入(就像MST一样)最先联通的点之间最长路径中的最小值就是新加入的边的长.... Count The Pairs Time Limit: 20000/10000 MS ...
- 给Storyboard设置初始页面(Initial Controller)
原文:https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/Chapters/SetInitialContr ...
- C++调用shell
1.直接采用system() 2.popen http://www.cnblogs.com/xitang/p/4288808.html
- Java中Runnable和Thread
java中有两种实现多线程的方式:一种是继承Thread类,一种是实现Runnable接口. 1.java启动线程为什么使用start函数呢? 在JDK的安装路径下,src.zip是全部的java源程 ...
- Camel——涨知识了,骆驼命名法
骆驼式命名法(Camel-Case)又称驼峰命名法,是电脑程式编写时的一套命名规则(惯例).正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字.程序员们为了自己的 ...