USACO 2.1 Healthy Holsteins (DFS)
2015-09-30 19:05
429 查看
#include <stdio.h> #define DEBUG 1 #define TESTCASES 9 #define MAX_TYPES_VITAMINS 25 #define MAX_TYPES_FEEDS 15 int typesOfVitamins; int minRequare[MAX_TYPES_VITAMINS + 1]; int typesOfFeeds; int vitaminOfFeed[MAX_TYPES_FEEDS + 1][MAX_TYPES_VITAMINS + 1]; int currentVitamin[MAX_TYPES_VITAMINS + 1]; int stack[MAX_TYPES_FEEDS + 1]; int top; int feedsEatten[MAX_TYPES_FEEDS + 1]; int minTypesOfFeedsEatten; int enough(){ int vitamin; for (vitamin = 1; vitamin <= typesOfVitamins; vitamin++) if (currentVitamin[vitamin] < minRequare[vitamin]) return 0; return 1; } void eat(int feed){ if (top >= minTypesOfFeedsEatten) return; if (enough()){ minTypesOfFeedsEatten = top; int i; for (i = 1; i <= top; i++) feedsEatten[i] = stack[i]; return; } if (feed > typesOfFeeds) return; int vitamin; for (vitamin = 1; vitamin <= typesOfVitamins; vitamin++) currentVitamin[vitamin] += vitaminOfFeed[feed][vitamin]; stack[++top] = feed; eat(feed + 1); for (vitamin = 1; vitamin <= typesOfVitamins; vitamin++) currentVitamin[vitamin] -= vitaminOfFeed[feed][vitamin]; top--; eat(feed + 1); } int main(){ #if DEBUG int testCase; for (testCase = 1; testCase <= TESTCASES; testCase++){ char inputFileName[20] = "inputx.txt"; inputFileName[5] = '1' + (testCase - 1); freopen(inputFileName, "r", stdin); printf("\n#%d\n", testCase); #endif scanf("%d", &typesOfVitamins); int vitamin; for (vitamin = 1; vitamin <= typesOfVitamins; vitamin++) scanf("%d", &minRequare[vitamin]); scanf("%d", &typesOfFeeds); int feed; for (feed = 1; feed <= typesOfFeeds; feed++) for (vitamin = 1; vitamin <= typesOfVitamins; vitamin++) scanf("%d", &vitaminOfFeed[feed][vitamin]); for (vitamin = 1; vitamin <= typesOfVitamins; vitamin++) currentVitamin[vitamin] = 0; top = 0; minTypesOfFeedsEatten = MAX_TYPES_FEEDS + 1; eat(1); printf("%d ", minTypesOfFeedsEatten); int i; for (i = 1; i <= minTypesOfFeedsEatten; i++) printf("%d ", feedsEatten[i]); printf("\n"); #if DEBUG } #endif return 0; }
相关文章推荐
- 推荐-新云网站管理系统 2.1 商业版(包含商城) 下载
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- 英语听写专家 2.1 Build 0086 注册码
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- C 语言实现迷宫 DFS算法
- Windows server2003下搭建openmeetings2.1视频会议系统
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode
- HDFS ---- Services startup
- USACO 3.2.2:Stringsobits
- POJ1523 SPF dfs
- poj1731 Orders dfs
- Surrounded Regions
- Binary Tree Zigzag Level Order Traversal,Restore IP Addresses,Word Search,Simplify Path