RQNOJ 39 饮食问题 解题报告

  就是暴力搜索,用f[i]为0为1代表是否能够构成着一种,如果能就是1不然就是0,然后代码就出来了:

#include <stdio.h>
#include <stdlib.h>
char f[35001];

int main(int argc, char **argv)
{
	int i, j, max = 0;
	int m, n, a;
	scanf("%d%d", &m, &n);
	f[0] = 1;
	for(i = 1; i <= n; i++){
		scanf("%d", &a);
		for(j = max; j >= 0; j--){
			if(!f[j]){
				continue;
			}
			if(j + a <= m){
				if(j + a > max){
					max = j + a;
				}
				f[j + a] = 1;
			}
		}
	}
	printf("%d\n", max);
	return 0;
}

  

posted @ 2011-09-25 18:47  zqynux  阅读(216)  评论(0编辑  收藏  举报