萌新这回是真的被水题卡住了
查看原帖
萌新这回是真的被水题卡住了
1037440
0Io_oI0楼主2024/12/11 16:33

WA40 代码:

#include<bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
#define i_ak return
#define ioi  0
I AK IOI;
int v,a[30],g,f[30][20],ans=0x3f3f3f,s[30];
vector<int>h,b;
bool check(){
	for(int i=1;i<=v;i++)if(s[i]<a[i])return 0;
	return 1;
}
void dfs(int x){
	if(x>g)return;
	if(h.size()>=ans)return;
	if(check()){
		if(h.size()<ans){
			ans=h.size();
			b=h;
		}
		return;
	}
	h.push_back(x);
	for(int i=1;i<=v;i++)s[i]+=f[x][i];
	dfs(x+1);
	h.pop_back();
	for(int i=1;i<=v;i++)s[i]-=f[x][i];
	dfs(x+1);
}
int main(){
	cin>>v;
	for(int i=1;i<=v;i++)cin>>a[i];
	cin>>g;
	for(int i=1;i<=g;i++)for(int j=1;j<=v;j++)cin>>f[i][j];
	dfs(0);
	cout<<b.size();
	for(auto it:b)cout<<' '<<it;
	i_ak ioi;
}

问题似乎出在当 size 相同时,也更新了数据。

2024/12/11 16:33
加载中...