2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=151; int a[N],f[N*1000],rt[N*1000]; int main() { int m;scanf("%d",&m); int n;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); memset(f,0,sizeof(f));f[0]=1; for(int i=1;i<=n;i++) for(int j=m;j>=a[i];j--)if(f[j]<=1) f[j]+=f[j-a[i]]; if(f[m]>1) puts("-1"); else if(f[m]==0) puts("0"); else { int now=m; for(int i=1;i<=n;i++) { if(f[now-a[i]]&&now-a[i]>=0) now-=a[i]; else printf("%d ",i); } } return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=151; int a[N],f[N*1000],rt[N*1000]; int main() { int m;scanf("%d",&m); int n;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); memset(f,0,sizeof(f));f[0]=1; for(int i=1;i<=n;i++) for(int j=m;j>=a[i];j--)if(f[j]<=1) f[j]+=f[j-a[i]]; if(f[m]>1) puts("-1"); else if(f[m]==0) puts("0"); else { int now=m; for(int i=1;i<=n;i++) { if(f[now-a[i]]&&now-a[i]>=0) now-=a[i]; else printf("%d ",i); } } return 0; }
- 1
信息
- ID
- 723
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 86
- 已通过
- 29
- 上传者