3 solutions
-
2
#include<bits/stdc++.h> using namespace std; const int N=25; int w[N],ans=-1,n,m; void dfs(int u,int s) { if(u==n+1) { if(s<=m)ans=max(ans,s); return; } dfs(u+1,s); dfs(u+1,s+w[u]); } int main() { cin>>n>>m; for(int i=1;i<=n;i++)scanf("%d",&w[i]); dfs(1,0); printf("%d",ans); return 0; }
-
0
-
-2
好吧,我再来一次。
#include<bits/stdc++.h> using namespace std; const int N=25; int w[N],ans=-1,n,m; void dfs(int u,int s) { if(u==n+1) { if(s<=m)ans=max(ans,s); return ; } dfs(u+1,s); dfs(u+1,s+w[u]); } int main() { cin>>n>>m; for(int i=1;i<=n;i++)scanf("%d",&w[i]); dfs(1,0); printf("%d",ans); return 0; }
- 1
Information
- ID
- 229
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 35
- Accepted
- 11
- Uploaded By