dfs
这份代码终于理解了dfs
#include <iostream> #include <cmath> using namespace std; float a[100 + 10]; int b[100 + 10]; int ans = 0; int N = 0; void dfs(double sum = 0,int val = 0,int st = 0,int deep = 0) { //if ((int)sum == int)(ceil(sum)) && (int)sum%5 == 0) if(int(sum) == int(ceil(sum)) && int(sum)%5==0) { ans = max(ans,val); } if (deep >= 3) return; for (int i = st+1;i<=N;i++) { dfs(sum + a[i],val+b[i],i,deep+1); } } int main() { int Q; while (~scanf("%d",&Q)) { //int n; while (Q--) { ans = 0; scanf("%d",&N); for (int i = 1;i<=N;i++) { scanf("%f %d",&a[i],&b[i]); } dfs(); printf("%d ",ans); } } }