解题思路: 搜索回溯计算数字序列,
注意事项: 在递归之后, 恢复res值以做下次计算
参考代码:
#include<iostream> #include<algorithm> using namespace std; const int N = 1e4 + 10; int a[N]; int n,k,res; bool ans = false; void dfs(int x){ for (int j = 1; j <= 2; j ++) { a[x] *= -1; res += a[x]; if(x == n ){ if(abs(res) % k == 0) ans = true; return; } else dfs(x + 1); res -= a[x]; } } int main() { cin >> n >> k; for(int i = 1; i <= n; i ++) cin >> a[i]; dfs(1); cout << (ans ? "YES" : "NO"); return 0; }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:909 |
C语言考试练习题_保留字母 (C语言代码)浏览:743 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1968 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:726 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:689 |
简单的a+b (C语言代码)浏览:542 |
生日日数 (C语言代码)浏览:1574 |
盐水的故事 (C语言代码)浏览:1603 |
母牛的故事 (C语言代码)浏览:519 |
小O的乘积 (C++代码)浏览:796 |