小米
单选 10,多选 10,编程 2
Reference
Index
1. 小米大礼包
思路
DFS
C++(67%,TLE)
#include <stdio.h>
int n;
int p[210];
int m;
bool dfs(int i, int sum) {
if (i == n) return sum == m;
if (dfs(i + 1, sum + p[i])) return true;
if (dfs(i + 1, sum)) return true;
return false;
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; ++i)
scanf("%d", &p[i]);
scanf("%d", &m);
if (dfs(0, 0))
printf("1");
else
printf("0");
return 0;
}加入剪枝(未测试)
【小米2018-09-20在线笔试】小米大礼包 - CSDN博客
```C++
includeint n; int p[210]; int m;
bool dfs(int i, int sum) { if (sum > m) return false; // 剪枝 if (i == n) return sum == m; if (dfs(i + 1, sum + p[i])) return true; if (dfs(i + 1, sum)) return true; return false; }
int main() {
}
Python(未测试)
最后更新于
这有帮助吗?