摘要:
题目:http://poj.org/problem?id=3087题意:给你两堆纸牌,让你通过数次洗牌动作使得洗牌之后的序列为给定序列。输出最小的洗牌次数。洗牌方法:把第二堆的第一张放在最下面,让后放第一堆最下面的那张,;轮流放。洗完之后,把下面的n张作为第一堆,上面的n张作为第二堆。做法:模拟纸牌的放法,一步步的放,当序列符合的时候就终止放。当纸牌的顺序和一开始的顺序相同的时候就输出-1。注意:经过n次洗牌之后,一定会得到和最开始的序列相同的时候,此时就是循环结代码:View Code 1 #include <iostream> 2 #include<cstdio> 阅读全文
摘要:
题目:http://poj.org/problem?id=3126题意:给你两个四位数,a和b,然后改变四位中的一位,从a改变到b,每次得到的数必须是素数,求最小改变次数注意:初始化问题,就是队列一开始一定要是空的。。。(wa了好几次)代码:View Code 1 #include <iostream> 2 #include<queue> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 queue<int>q; 7 int num[10010],m,n; 8 阅读全文
摘要:
题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1451这个题弄了好久,其实这个中文就挺难理解的,,一开始理解错题意了,,然后后来问了问ZJH学长题意,弄明白的,提交之后还是不对,后来回到宿舍之后问了问LMM学姐,感觉他的方法很好还有就是用dp了一、用栈模拟思路:利用一个标记数组,a[],用于记为第i个字符是否为合法字符,若是则标记为1,否则标记为0,最后便利一遍,最长合法字串就是最长的连续的1的长度,子串的个数就是有几段连续的i就是几二、dpdp[]数组存储i位置最长的合法子串的长度, 阅读全文