求改正
查看原帖
求改正
1111397
af_T_T_fa楼主2024/5/25 15:31
#include<bits/stdc++.h>
using namespace std;
int a[50][50],b[50];
int n,m;
struct node{
	int ws[30];
	int num[30];
	int ans;
}q;
void bfs()
{
	queue<node>que;
	q=que.front();
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
			q.ws[j]=a[i][j];
		q.num[1]=i;
		q.ans=1;
		que.push(q);
	}
	while(!que.empty())
	{
		node s,t;
		s=que.front();
		t=que.front();
		que.pop();
		bool w=1;
		for(int i=1;i<=n;i++)
		{
			if(s.ws[i]<b[i])
			{
				w=0;
				break;
			}
		}
		if(w==1)
		{
			cout<<s.ans<<' ';
			for(int i=1;i<=s.ans;i++)cout<<s.ws[i]<<" ";
			return;
		}
		for(int i=s.num[s.ans]+1;i<=m;i++)
		{
			for(int j=1;j<=n;j++)
				t.ws[j]=s.ws[j]+a[i][j];
			t.ans=s.ans+1;
			t.num[t.ans]=i;
			que.push(t);
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>b[i];
	cin>>m;
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	bfs();
	return 0;
}
2024/5/25 15:31
加载中...