http://poj.org/problem?id=1780 题意:有个保险箱子是n位数字编码,当正确输入最后一位编码后就会打开(即输入任意多的数字只有最后n位数字有效)……要选择一个好的数字序列,最多只需按键10n+n-1次就可以打开保险箱子,即要找到一个数字序列包含所有的n位数一次且仅一次.序列要为字典序. 思路: 对于当前长度为n-1的序列,其后添加一个数字,使得添加后的序列没有在前面出现过.这样的话,以n-1位数为顶点,新增一个数后构成n位数为边,到达后n-1位数的新顶点.这样一来,就构…
两道题目意思差不多 第一题是10进制 , 第二题是2进制的 都是利用欧拉回路的fleury算法来解决 因为我总是希望小的排在前面,所以我总是先将较小数加入栈,再利用另一个数组接收答案,但是这里再从栈中导出来答案要倒一下了,这一点要注意 poj 1780 #include <cstdio> #include <cstring> #include <cmath> using namespace std; #define N 1000010 int ans[N] , cnt[…
题意: 1.提供密码的位数. 2.密码的输入可以一直保持,取后n位作为密码.如果密码正确则开锁. 3.设计一种方法使得在输入最少的情况下破译.(即保证每个密码只输入一次) 4.输出输入的数字的序列. 思路: 去密码的前n-1位作为状态节点,将n位数密码作为边.建造有向图. 显然,每个点的入度和出度都为10,则一定存在欧拉回路. 利用简单DFS寻找欧拉回路. (这题好像是要求输出字典序最小的序列) DFS应该不难写,但是这题如果直接递归会爆栈.所以需要手工用栈模拟递归的过程... 屌丝看了大神的关…
题目链接: http://poj.org/problem? id=1780 Code Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2037   Accepted: 751 Description KEY Inc., the leading company in security hardware, has developed a new kind of safe. To unlock it, you don't nee…
题目链接:http://poj.org/problem?id=1300 You are a butler in a large mansion. This mansion has so many rooms that they are merely referred to by number (room 0, 1, 2, 3, etc...). Your master is a particularly absent-minded lout and continually leaves door…
题目链接:http://poj.org/problem?id=2230 题目大意:给你n个点m条边,Bessie希望能走过每条边两次,且两次的方向相反,让你输出以点的形式输出路径. 解题思路:其实就是输出有向图的欧拉路,只是让你以点的形式输出.建图的时候,输入a,b直接建立(a,b)和(b,a)正反两条边,然后dfs递归遍历即可.注意输出点的位置:在边遍历完之后输出,原理暂时还没搞懂. 代码: #include<iostream> #include<cstdio> #include…
题目要求按字典序排列,而且可能有重边 所以一开始就将数组从大到小排列,那么我将字符串加入链表时就会令小的不断前移,大的被挤到后面 这里有一点问题就是我一开始使用的是qsort: int cmp(const void *s1 , const void *s2){    return strcmp((char*)s1 , (char*)s2)<0;} qsort(str , n , sizeof(str[0]) , cmp) poj一直wa,试了发zoj却过了,可能是编译器原因吧,然后将字符串放入了…
题目链接: http://poj.org/problem?id=2083 题目描述: n = 1时,图形b[1]是X n = 2时,图形b[2]是X  X        X                                  X  X 所以n时,图形b[n]是b[n-1]         b[n-1]   b[n-1] b[n-1]        b[n-1] 解题思路: 用递归打印图形,存到二维数组里面,输出是一个矩形,竟然是一个矩形!!!!!! 代码: #include <cm…
//题目描述:KEY公司开发出一种新的保险箱.要打开保险箱,不需要钥匙,但需要输入一个正确的.由n位数字组成的编码.这种保险箱有几种类型,从给小孩子玩的玩具(2位数字编码)到军用型的保险箱(6位数字编码).当正确地输入最后一位编码后,保险箱就立刻打开了.保险箱上没有“确定”键.当你输入超过n位数字,则只有最后n位数字有效.例如,对一种4位数字编码的型号,如果正确的编码为4567,你想输入的编码为1234567890,则保险箱的门会在你输入数字7后马上就打开了.为了达到这种效果所需要设计的软件其实…
/* 对于n为密码想要序列最短 那么 1234 2345 这两个一定挨着 就是说 前一个的后n-1位是后一个的前n-1位 假设n==3 我们用0-99作为点的编号建图 然后每个点连出去10条边 两个相邻点有n-1个是重复的 边的权值可用两个点计算 比如 12 23 权值为123 123 234 权值为1234 显然最后的序列是每个边记录一次 也就是跑欧拉路 对于记录下的边权 第一条输出前n-1为 上下的输出最后一位 这就是答案了 poj上没有special judge 要求字典序最小 这里建边时…