TYVJ 1100 超级书架2 解题报告
N比较小,暴力搜就行,代码如下:
#include <stdio.h> #include <stdlib.h> int num[20]; int ans = 0xFFFFFFF, n, m; int t; void srch(int now) { if(now == n){ if(t >= m && t < ans){ ans = t; } if(t == m){ printf("0\n"); exit(0); } return; } srch(now + 1); t += num[now]; srch(now + 1); t -= num[now]; } int main(int argc, char **argv) { int i; scanf("%d%d", &n, &m); for(i = 0; i < n; i++){ scanf("%d", &num[i]); } srch(0); printf("%d\n", ans - m); return 0; }