太空飞行计划nylgoj531
不知道是哪里出了错~~~~~~~~~ 答案是正确的 可是就是提交不上去
#include<stdio.h>
#include<stdlib.h>
int main()
{
int m,n;//m 实验的次数,n 实验的仪器的个数
int b[102][2];//0表示的是仪器的价格,1 表示的是 是否使用
int a[502][502];//a[i][0]表示的是付出的价格,a[1]表示的是进行循环的次数
int c[502];//表示的是尽职数
int d[502];//表示这个实验是否选择去做
int e[502];//表示已经选择的机器
int f[502];//用来存储每个情况
int i,j,k;
int count=0,cost=0;//价格的总数
c[1]=1;
while(scanf("%d%d",&m,&n)!=EOF)
{
for(i=2;i<=m;i++)
{
c[i]=2*c[i-1];
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&a[i][0],&a[i][1]);
for(j=2;j<a[i][1]+2;j++)
scanf("%d",&a[i][j]);
}
for(i=1;i<=n;i++)
{
scanf("%d",&b[i][0]);
}
int max=0;
for(i=0;i<2*c[m];i++)
{
int tem=i;
for(j=1;j<=m;j++)
{
d[j]=tem/c[m-j+1];
tem=tem%c[m-j+1];
}
for(j=1;j<=n;j++)
{
e[j]=0;
f[j]=0;
}
count=0;//总的投资
for(j=1;j<=m;j++)
{
for(k=1;k<=n;k++)
f[k]=0;
if(d[j]==1)
{
count+=a[j][0];
for(k=2;k<a[j][1]+2;k++)
{
f[a[j][k]]=+1;
}
}
for(k=1;k<=n;k++)
{
if(f[k]>e[k])
e[k]=f[k];
}
}
cost=0;
for(k=1;k<=n;k++)
if(e[k]!=0)
{
cost=cost+b[k][0]*e[k];
}
if(count-cost>max)
max=count-cost;
}
printf("%d\n",max);
}
return 0;
}

浙公网安备 33010602011771号