死循环20分求助
查看原帖
死循环20分求助
529225
shuzihan666楼主2023/11/29 16:39
#include<bits/stdc++.h>
using namespace std;
int v,g,a[1001],b[1001][1001],c[1001],d[1001],minn=99999999;
bool pd(int s)
{
	for(int i=1;i<=v;++i)
	{
		int sum=0;
		for(int j=1;j<=s;++j) sum+=b[c[i]][i];
		if(sum<a[i]) return false;
	}
	return true;
}
void dfs(int t,int s)
{
	if(t>g)
	{
		if(pd(s)&&s<minn)
		{
			minn=s;
			for(int i=1;i<=minn;++i)
			d[i]=c[i];
		}
		return;
	}
	c[s+1]=t;
	dfs(t+1,s+1);
	c[s+1]=0;
	dfs(t+1,s);
}
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>>b[i][j];
	dfs(1,0);
	cout<<minn<<" ";
	for(int i=1;i<=minn;++i)
	cout<<d[i]<<" ";
	return 0;
}
2023/11/29 16:39
加载中...