第三题用了dfs也行,第一题想不出来。。我以为是dp,做对2道应该有面试机会吧。。。
#include<bits/stdc++.h> using namespace std; unsigned long long arr1[100]; // 武力 int arr2[100]; // 金币 int n; int ans = 0x7fffff; void dfs(int i, int cur, unsigned long long a) { if(cur >= ans) return; if(i==n) { ans = min(ans, cur); return ; } if(a < arr1[i]) { dfs(i+1, cur+arr2[i], a+arr1[i]); } else { dfs(i+1, cur+arr2[i], a+arr1[i]); dfs(i+1, cur, a); } } int main() { int n; cin>>n; for(int i=0;i<n;i++) cin>>arr1[i]; for(int i=0;i<n;i++) cin>>arr2[i]; dfs(0, 0, 0); cout << ans << endl; }