社区讨论

开心的错了,求调

P1460[USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m6akmc5k
此快照首次捕获于
2025/01/24 17:40
去年
此快照最后确认于
2025/11/04 10:43
4 个月前
查看原帖
CPP

#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;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...