开心的错了,求调
查看原帖
开心的错了,求调
1494013
imx2g楼主2025/1/24 17:38

#include<iostream>
#include<queue>
using namespace std;

struct wss//维生素子结构体 暂时用 
{
	int ans;//料饲个数
	int num[30];//饲料编号
	int wtm[30]; //素子之和 
};
int v,wtm[10000];
int g,sl[10000][10000];
int ans;
queue<wss> q; 
int main(){
	//输入 
	cin>>v;
	
	
	for(int i=0;i<v;i++){
		cin>>wtm[i];
	}
	
	cin>>g;
	
	for(int i=0;i<g;i++){
		for(int j=0;j<v;j++){
			cin>>sl[i][j];
		}
	}
	
	
	//初始状态1种饲料的情况
	for(int i=1;i<=g;i++)
	{
		wss n1;
		n1.ans=1;
		n1.num[n1.ans]=i;
		
		for(int j=0;j<v;j++){
			n1.wtm[j]=sl[i][j];
		}
		q.push(n1);//入了个队 
	}
																										
	
	
	//队列非空,重复执行 
	
	while(!q.empty())
	{
		wss n1;
		n1=q.front();//保留 
		q.pop();//出队 
		bool b=true;
		for(int i=0;i<v;i++)
		{
			b=b&&(n1.wtm[i]>=wtm[i]);
		}
		if(b)
		{
			cout<<n1.ans;
			for(int i=0;i<n1.ans;i++)cout<<n1.num[i]<<" ";
			return 0;
		}
		//拓展新状态 
		int start=n1.num[n1.ans];
		for(int i=start+1;i<=g;i++)
		{
			wss n2;
			n2.ans=n1.ans+1;
			n2.num[n2.ans]=i;
			for(int j=1;j<=v;j++)
				n2.wtm[j]=n1.wtm[j]+sl[i][j];
			//合法新状态 
			q.push(n2);
		}
	}
	
	return 0;
}
2025/1/24 17:38
加载中...