摘要: f[i][j]代表将第i束花插进第j个花屏所能获得的最大的分,方程是: f[i][j] = max(f[i - 1][k] + map[i][j]) (i -1=<k<j),代码如下:#include <stdio.h>#include <stdlib.h>int f[101][101];int map[101][101];int p[101][101];void output(int a, int b){ if(a == 1){ printf("%d", b); return; } output(a - 1, p[a][b]); pri 阅读全文
posted @ 2011-08-10 18:07 zqynux 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 就是用位运算,直接读出一行中应该放的位置和该放的数字,然后枚举。但不是随意的枚举,要从已经填的最多的那行开始搜,最后搜内容最空白的一行,至于为什么呢?想一想吧,一行中要填的空白多(就是已经填的很少),那每个个子里面可以装的数字就越多,相反,需要填写的很少,那么枚举的情况就少。就是说比如第i行只有一个数字要填,在这一列下面还有几行是空白的,那这一个是确定的,是已知的,只有这一种可能,那在枚举其余行这一列就少了一种可能性,懂了么? 好了,这一个细节纠结了我很久,上代码了:#include <stdio.h>#include <stdlib.h>#define con(i) 阅读全文
posted @ 2011-08-10 16:24 zqynux 阅读(2322) 评论(0) 推荐(1) 编辑