2 条题解
-
5
转载自@芝士雪豹的题解
格式化很累的!点个赞吧!求求了~
#include<bits/stdc++.h> using namespace std; int v,g; int vt[30]; int a[30][30]; int b[30]; int k[30]; int lit=99; bool pd; void dfs(int dep,int s) { pd=true; for(int i=1;i<=v;i++) { int ans=0; for(int j=1;j<=s;j++) ans+=a[b[j]][i]; if(ans<vt[i]) { pd=false; break; } } if(pd) { if(s<lit) { lit=s; for(int i=1;i<=s;i++) k[i]=b[i]; } } if(dep>g) return; b[s+1]=dep; dfs(dep+1,s+1); dfs(dep+1,s); } int main() { cin>>v; for(int i=1;i<=v;i++) cin>>vt[i]; cin>>g; for(int i=1;i<=g;i++) { for(int j=1;j<=v;j++) { cin>>a[i][j]; } } dfs(1,0); cout<<lit<<' '; for(int i=1;i<=lit;i++) cout<<k[i]<<' '; return 0; }
-
4
上代码
#include<bits/stdc++.h>
using namespace std;
int v,g;
int vt[30];
int a[30][30];
int b[30];
int k[30];
int lit=99;
bool pd;
void dfs(int dep,int s)
{
pd=true;
for(int i=1;i<=v;i++)
{
int ans=0;
for(int j=1;j<=s;j++)
ans+=a[b[j]][i];
if(ans<vt[i])
{
pd=false;
break; }
}
if(pd)
{
if(s<lit)
{
lit=s;
for(int i=1;i<=s;i++)
k[i]=b[i];
}
}
if(dep>g) return;
b[s+1]=dep;
dfs(dep+1,s+1);
dfs(dep+1,s);
}
int main()
{
cin>>v;
for(int i=1;i<=v;i++)
cin>>vt[i];
cin>>g;
for(int i=1;i<=g;i++)
{
for(int j=1;j<=v;j++)
{
cin>>a[i][j];
}
}
dfs(1,0);
cout<<lit<<' ';
for(int i=1;i<=lit;i++)
cout<<k[i]<<' ';
return 0;
}
给个赞吧
- 1
信息
- ID
- 459
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 98
- 已通过
- 54
- 上传者