USCAO 2.1.4
来源:互联网 发布:js获取文件大小 编辑:程序博客网 时间:2024/05/31 13:16
在写这个题之前我想问一下,有没有知道在贴代码的时候如何使代码排版风格与原来保持一致,尤其是缩进,原来是按tab键的地方放到博客里就变成了一个空格,这样会显得代码很没有层次感。。。。求教。。。
这个题的意思大概是给出奶牛所需的各种维生素的数量和各种饲料里含有的各种维生素的量,要求你找出一种配料方案来使得用到的饲料种类最小且能满足奶牛对各种维生素的需求。
对于每种饲料只有两种选择:要么选用,要么不选用。那么就可以对所有的饲料进行一个排列组合选出符合要求的种类最小的组合即可,可用DFS来解决。
#include<stdio.h>
#include<iostream>
using namespace std;
int n,v[26],m,g[16][26],now[26],res[16],dat[16],minn=1000;
void dfs(int deep,int cnt)
{
if(deep>m)
{
for(int i=1;i<=n;i++)
if(now[i]<v[i])
return;
if(cnt<minn)
{
minn=cnt;
for(int i=1;i<=minn;i++)
res[i]=dat[i];
}
return;
}
dat[cnt+1]=deep;
for(int i=1;i<=n;i++)
now[i]+=g[deep][i];
dfs(deep+1,cnt+1);
for(int i=1;i<=n;i++)
now[i]-=g[deep][i];
dfs(deep+1,cnt);
}
int main()
{
freopen("holstein.in","r",stdin);
freopen("holstein.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
cin>>m;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>g[i][j];
for(int i=1;i<=n;i++)
now[i]=0;
dfs(1,0);
cout<<minn;
for(int i=1;i<=minn;i++)
cout<<" "<<res[i];
cout<<endl;
return 0;
}
- USCAO 2.1.4
- USCAO 2.1.2
- USCAO 2.1.3
- USCAO 2.1.5
- USCAO 2.2.4
- USCAO 2.3.4
- USCAO 2.4.4
- USCAO 3.1.4
- USCAO 3.2.4
- uscao--camelot
- USCAO 题解
- USCAO 热浪
- USCAO Chap4 Fence Loops
- uscao 3.2 Sweet Butter
- USCAO section 1.1 Transformations
- uscao Superprime Rib
- USCAO:Ordered Fractions
- USCAO 2.2.1
- 使用Kinect驱动OGRE顶点动画的实现
- USCAO 2.1.2
- USCAO 2.1.3
- POJ 1101
- POJ 1125
- USCAO 2.1.4
- 柳传志西电演讲语录
- USCAO 2.1.5
- java中的equals()方法和hashCode()方法详解
- Vim的强大之处
- 数据结构的基本知识及常见试题
- 简明 Vim 练级攻略(转)
- POJ 1149
- USCAO 2.2.1