摘要: 下面两个博客的内容给了我很大的帮助,基本上都是参考他们的内容。http://blog.csdn.net/u013850478/article/details/23037423http://blog.sina.com.cn/s/blog_3cb8b94501017lpr.html首先约瑟夫的基本问题里... 阅读全文
posted @ 2014-04-19 11:54 echoht 阅读(778) 评论(1) 推荐(0) 编辑
摘要: 3.2相邻数字的基数不等比:skew数简单题,下面代码已AC。 1 #include 2 #include 3 #include 4 int tran2ten(char * data) 5 { 6 int i = 0; 7 int len = strlen(data); 8 ... 阅读全文
posted @ 2014-04-18 11:08 echoht 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 3.1相邻数字的基数等比:确定进制这道题很简单,下面代码已AC。 1 #include 2 #include 3 /** 4 * 把b进制的p转成10进制 5 */ 6 int tran2ten(int p, int b) 7 { 8 int r = 0; 9 int i = 0;1... 阅读全文
posted @ 2014-04-18 10:15 echoht 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 2.4装箱这道题比较简单,有点类似枚举所有情况,代码参考了教程做了改进,用数组存储知识,否则要做很多判断。代码已经AC。 1 #include 2 int main(void) 3 { 4 int a,b,c,d,e,f,x,y; 5 int sum; 6 int u[4]=... 阅读全文
posted @ 2014-04-17 00:14 echoht 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 2.4 填词其实这是个很简单的问题,但是题目有一定的误导性,因为题中故意说了单词出现的方向只能是竖直的或者水平的。我开始看到这个题目的时候,一直在想是不是得搜索每个字符的具体位置在哪?然后就陷入这个搜索问题中去了。后来突然想想不对啊。输出的答案和这个位置到底有没有确定是不相关的啊,我只要把P个单词中... 阅读全文
posted @ 2014-04-16 00:42 echoht 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 2.3 校门外的树解决这道题的关键是如何把多个有重叠的区域整理成互不重叠的若干个区域。我的解决方法的关键是把输入的各个区域按起始位置排序,然后再通过简单的数值比较和更新,就可以得到最后互补重叠的若干个区域。下面代码已经AC。 1 #include 2 #include 3 int comp(cons... 阅读全文
posted @ 2014-04-15 22:49 echoht 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 我的思路是采用递归的方法。总体思路是,先确定第K个串的第一个字符是0还是1,然后再递归确定第二个字符是0还是1,直到剩下字符全为0或者全为1.具体来说是这样的:1、先假设N个0和M个1的组合数为total,其中total=(N+M)!/[N!*M!],则N-1个0和M个1的组合数为[N/(N+M)... 阅读全文
posted @ 2014-04-14 21:49 echoht 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 这一题的题目有点问题,我觉得应该把b) format strings have edit distance 5 of each other变成larger than 5. 1 #include 2 #define M 100 3 /* 4 * 采用动态规划算法, 5 * 详见http://en.wikipedia.org/wiki/Edit_distance 6 */ 7 int wfEditDistance(char * a, char * b) 8 { 9 int i=0,j=0;10 int dist[257][257];11 12 for(i=0;i<... 阅读全文
posted @ 2014-04-13 12:22 echoht 阅读(439) 评论(0) 推荐(0) 编辑
摘要: 我的思路是给输入的string中每个字符出现次数进行计数,然后按ASCLL码顺序,循环遍历打印出来,每次打印时,记得把字符出现的次数-1。 阅读全文
posted @ 2014-04-12 22:24 echoht 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 这道题有几个关键的地方: 1、计算一个数组的逆序对的个数。   我采用遍历的方式,用两重循环,时间复杂度O(N^2),应该没有效率更高的方法【代码27-32】; 2、找到一对(d[j],d[k],设jk),通过交换他们,可以使得逆序对数减少最多。   首先看下交换任意一对(d[j],d[k],设jk),会对这个数组的逆序对的个数造成什么样的影响。认真思考下,可以知道交换(d[j],d[k])只影响在j到k之间的元素的逆序情况,而对这个范围之外的逆序对的个数是不造成影响的,因为[0到j-1]的任意元素相对[j到k]的任意元素的先后顺序,以及[k到len-1]的任意元素相对[j到k]的任意元素的先后顺序都没有变化。那么就只需要考虑交换后[i到j]之间逆序对变化的个数。交换(d[j],d[k])后,减少的逆序对是由下标在[j,k)之间且其元素大于d[k],以及下标在(j,k]之间且其元素小于d[j],而增加的逆序对是由下标在[j,k)之间且其元素小于d[k],以及下标在(j,k]之间且其元素大于d[j]【代码41-51】。另外一个值得注意的是只有当d[k]d[j]时,交换才能减 阅读全文
posted @ 2014-04-12 21:50 echoht 阅读(422) 评论(0) 推荐(0) 编辑