01 2013 档案
摘要:这是一道比较经典的动态规划的例题,感觉思路挺巧。这里有一篇不错的文章,可以看一下: http://blog.csdn.net/piaoyi0208/article/details/7728972 还有关于动态规划入门的一篇文章:http://blog.csdn.net/jqandjq/article/details/5060283 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 int n,i,j,k,l,i_max; 5 int array[101][101],sum[101];
阅读全文
摘要:这是一道20进制相加的习题,关键点在于把字母与数之间的转换,巧妙地利用strchr函数可以进行转换。下面是有位师兄写的吧,代码清晰,很容易看懂。 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 char* NUMS="0123456789abcdefghij"; 5 6 /*分别是读取的输入行,加数a,b,计算结果c */ 7 char line[105],a[105],b[105],c[105]; 8 9 /*字符换算为实际数值,例如'a'-&g
阅读全文
摘要:这道题目是多项式相乘、求模。。按照题目中的规则,可以看出,多项式的加法和减法是相同的结果,那么多项式的除法都可以用加法来计算了。代码的重点是21到24行,36到37行,是如何实现乘和求余的步骤。 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 #define MAXN 2000 5 struct poly{ int deg,x[MAXN];}; 6 void print(poly f) 7 { 8 cout<<f.deg<<' '; 9 for
阅读全文
摘要:这是一道关于博弈论的题目,并不是很难,但是由于没有接触过,感觉还是无从下手,下面记录下这道题目。 (引用别人的)第一个必败状态是2001.11.04。由此可以推出其他任何时间的状态。对于除2001.11.04外的其他任何时间,present状态是由能移动到的下两个next状态决定的(当然有些时间只有一个next状态),比如1924.12.19的状态是由1924.12.20和1925.01.19两个状态决定。如果两个next状态中有一个必败状态,则present状态为必胜状态;如果两个next状态都为必胜状态,则present状态为必败状态。 下面是代码,代码中的date为第一个必败态,依次推.
阅读全文
摘要:这是一个比直接深搜要发杂点的题,自己刚开始做的时候,思路并不是很清晰,查找了一些相关解答后,顺利弄懂,这里的代码并非我写的,是csdn上一个朋友写的,不错,我只是稍微添加注释。可以注意的是47到51行,55,56行。 1 #include <iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 #define maxnum 26 6 typedef struct{ 7 int l,r,u,d; 8 }data; 9 data squares[maxnum];//sq
阅读全文