最佳调度问题(dfs)
#include<iostream> #include<algorithm> using namespace std; bool cmp(int x,int y) { return x>y; } int ans=2147483647,n,k; int t[1010],s[1010]; void dfs(int a,int b) { if(ans<=b) { return; } if(a==n+1) { ans=min(ans,b); return; } for(int i=1;i<=k;i++) { s[i]=s[i]+t[a]; dfs(a+1,max(s[i],b)); s[i]=s[i]-t[a]; } return; } int main() { cin>>n>>k; for(int i=1;i<=n;i++) { cin>>t[i]; } sort(t+1,t+n+1,cmp); s[1]=t[1]; dfs(2,t[2]); cout<<ans; return 0; }