比赛 20140714上午练习 评测结果 AWAAWAATTT
题目名称 荷斯坦奶牛 最终得分 50
用户昵称 ok 运行时间 4.150 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2014-07-14 11:29:34
显示代码纯文本
#include <fstream>
using namespace std;
ifstream input("holstein.in");
ofstream output("holstein.out");
int i,j,n,a[26]={0},m,b[26][26]={0},z1=1000,z2=10000000,c[26]={0};
bool z3[26]={0},bian[26]={0};
int niu(int x,int y)
{
	int k,l,mmm=1;
	for(k=1;k<=n;k++)
	{
		if(c[k]<a[k]) mmm=0;
	}
	if(x<z1&&mmm)
	{
		z1=x;
		z2=y;
		for(i=1;i<=m;i++)
		{
			z3[i]=bian[i];
		}
	}
	if(x=z1&&y<=z2&&mmm)
	{
		z2=y;
		for(i=1;i<=m;i++)
		{
			z3[i]=bian[i];
		}
	}
	if(x<=z1)
	{
		for(k=m;k>=1;k--)
		{
			if(bian[k]==0)
			{
				bian[k]=1;
				for(l=1;l<=n;l++)
				{
					c[l]+=b[k][l];
					y+=b[k][l];
				}
				niu(x+1,y);
				bian[k]=0;
				for(l=1;l<=n;l++)
				{
					c[l]-=b[k][l];
					y-=b[k][l];
				}
			}
		}
	}
	return 0;
}
int main()
{
	input>>n;
	for(i=1;i<=n;i++) input>>a[i];
	input>>m;
	for(i=1;i<=m;i++) for(j=1;j<=n;j++) input>>b[i][j];
	niu(0,0);
	z1=0;
	for(i=1;i<=m;i++)
	{
		if(z3[i]) z1++;
	}
	output<<z1;
	for(i=1;i<=m;i++)
	{
		if(z3[i]) output<<' '<<i;
	}
	output<<endl;
	input.close();
	output.close();
	return 0;
}