Transportation-301uva 回溯
来源:互联网 发布:oracle sql top用法 编辑:程序博客网 时间:2024/05/16 23:33
比较简单的回溯,不过需要注意的是,遍历的时候需要加一个cur参数避免重复访问之前已经访问过的订单,AC了。。不过卡时间卡到了2S。。。。勉强过了
#include<cstdio>#include<cstring>#include<iostream>#include<iostream>using namespace std;#define MAX_SIZE 100int L,n,m;struct Bill{ int from; /*起始地*/ int to; /*目的地*/ int pas; /*乘客数量*/ int sum; /*订单总金额*/}bill[MAX_SIZE];int visa[MAX_SIZE]; /*记录订单是否被访问过*/int state[MAX_SIZE];/*当前载客人数*/int SUM,MIN;void dfs(int cur){ for(int i = cur;i < m;i++) if(!visa[i]) /*如果这个订单没有被看过*/{ int temp[MAX_SIZE]; int ok = 1; memcpy(temp,state,sizeof(state)); for(int j = bill[i].from ; j< bill[i].to;j++) /*检查*/{ state[j] += bill[i].pas; if(state[j] > n){ok = 0;break;} } if(ok){ visa[i] = 1; /*表示访问过了*/ SUM += bill[i].sum;/*总和要加上*/ dfs(i + 1); } /*状态还原*/ visa[i] = 0; memcpy(state,temp,sizeof(temp)); if(ok) SUM -= bill[i].sum; } MIN = MIN > SUM? MIN:SUM; return ;}int main(){ while(scanf("%d%d%d",&n,&L,&m)!=EOF){ if(!L&&!n&&!m) break; memset(visa,0,sizeof(visa)); memset(state,0,sizeof(state)); SUM = 0; MIN = 0; for(int i = 0;i < m;i++){ scanf("%d",&bill[i].from); scanf("%d",&bill[i].to); scanf("%d",&bill[i].pas); bill[i].sum = (bill[i].to - bill[i].from)*bill[i].pas; }/*输出订单的基本信息*/ dfs(0); printf("%d\n",MIN); } return 0;}
0 0
- UVa 301 - Transportation 回溯
- ( 回溯 )uva 301 - Transportation
- Transportation-301uva 回溯
- UVA - 301 Transportation (回溯)
- uva 301 Transportation(回溯)
- uva 301 Transportation(回溯)
- UVA 301 POJ 1040- Transportation DFS 回溯
- UVA - 301 - Transportation (暴力回溯)
- Transportation uva+递归+回溯
- UVA 301 Transportation 。。有点需要思考的回溯、、
- UVa 301 - Transportation
- uva 301 - Transportation
- uva 301 - Transportation
- UVa 301 - Transportation
- Uva 301 Transportation
- uva 301 Transportation
- UVa 301 - Transportation
- UVA 301 Transportation
- hdu 3833 YY's new problem(哈希)
- hdu1286 找新朋友 (欧拉函数法)
- rz与sz命令
- ubuntu 手动挂载U盘 [已亲自实验过]
- 将字符串逆序打印和按单词逆序打印
- Transportation-301uva 回溯
- SoftReference使用心得
- Linux设备驱动程序的Makefile文件例子
- 黑马程序员-JAVA jdk1.5新特性
- MFC多线程失败:Create Instance failed
- 根据int随机生成名字
- cf 85 E. Petya and Spiders
- 【试练】某公司面试试题
- poj 2288 Islands and Bridges_状态压缩dp_哈密尔顿回路问题