摘要: 我直接模拟的,第i个数字必定大于或等于第i-1个数字,我是按照这种思想模拟的,那么每种情况就只会考虑一次,然后需要一个重大剪枝: 当i=k-1的时候,就不去枚举了,直接得到答案,用n-sum,我还有一个小剪枝,因为我的第i个数一定大于或等于第i-1个数,那么如果第i个数加到第k个数就大于n的话,就没必要继续枚举了。 2011年08月29日: 刚刚发现,上次的代码有问题,数据太弱,所以过了,但是2 15 151,2 151 15的答案不一样,思索了好久,最后想出了正确的算法。 就是枚举两个字符串,如果相同就继续枚举,不同就继续枚举。。。。。(没听懂的看下面第二段代码,第一段只... 阅读全文
posted @ 2011-08-17 23:43 zqynux 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 裸搜索,然后处理下范围就行,代码如下:#include <stdio.h>#include <string.h>#include <stdlib.h>char middle[9], last[9];void srch(int m_s, int m_e, int l_s, int l_e){ int i; for(i = m_s; i <= m_e; i++){ if(middle[i] == last[l_e]){ break; } } printf("%c", last[l_e]); if(m_s != i){ srch(m_s, 阅读全文
posted @ 2011-08-17 17:22 zqynux 阅读(635) 评论(0) 推荐(0) 编辑
摘要: 数据不大,直接枚举……嗯,然后就是,比如:1212和1212接龙之后是121212,而不是12121212,就这个注意的,代码:#include <stdio.h>#include <string.h>#include <stdlib.h>char str[20][1001];char tmp[1001];int f[20][20];int used[20];int ans;int n;void srch(int k, int len){ int i; if(len > ans){ ans = len; } used[k]++; for(i = 0; 阅读全文
posted @ 2011-08-17 17:06 zqynux 阅读(1614) 评论(0) 推荐(0) 编辑