UVa 301 - Transportation
2014-02-24 18:25
274 查看
题目链接:UVa 301 - Transportation
回溯,注意这个题是一个方向走的,不回头。写了两份代码,第一份WA,换了种思路,第二份AC了,都贴出来,以后再研究研究。
回溯,注意这个题是一个方向走的,不回头。写了两份代码,第一份WA,换了种思路,第二份AC了,都贴出来,以后再研究研究。
/** WA */ #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int MAX_N = 22 + 5; int m,n,c; struct order { int start,end,num; }; int cmp(order a,order b) { return a.start < b.start; } order o[MAX_N]; int vis[MAX_N]; int _max; void dfs(int x,int p_num,int money) { int i,j; for(i = x;i < n;i++) { if(i != 0 && o[i-1].start != o[i].start) { for(j = i - 1;j >= 0;j--) if(o[j].end == o[i].start && vis[j]) p_num -= o[j].num;//到站了下车 } p_num += o[i].num; if(p_num > c) { p_num -= o[i].num; continue; } money = money + (o[i].end - o[i].start) * o[i].num;//先收钱 vis[i] = 1; dfs(i+1,p_num,money); vis[i] = 0; p_num -= o[i].num; money = money - (o[i].end - o[i].start) * o[i].num; } if(money > _max) _max = money; } int main() { while(cin>>c>>m>>n && (c || m || n)) { _max = 0; memset(vis,0,sizeof(vis)); memset(o,0,sizeof(o)); int i; for(i = 0;i < n;i++) cin>>o[i].start>>o[i].end>>o[i].num; sort(o,o+n,cmp); dfs(0,0,0); cout<<_max<<endl; } return 0; }
/** AC */ #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int MAX_N = 22 + 5; const int MAX_M = 7 + 3; int m,n,c; struct order { int start,end,num; }; order o[MAX_N]; int station[MAX_M]; int _max; void dfs(int x,int money) { int i,j; for(i = x;i < n;i++) { for(j = o[i].start;j < o[i].end;j++) { station[j] += o[i].num; if(station[j] > c) break; } if(j == o[i].end) { dfs(i+1,money+(o[i].end-o[i].start)*o[i].num); j--; } for(;j >= o[i].start;j--) station[j] -= o[i].num; } if(money > _max) _max = money; } int main() { while(cin>>c>>m>>n && (c || m || n)) { _max = 0; memset(o,0,sizeof(o)); memset(station,0,sizeof(station)); int i; for(i = 0;i < n;i++) cin>>o[i].start>>o[i].end>>o[i].num; dfs(0,0); cout<<_max<<endl; } return 0; }
相关文章推荐
- UVa 301 - Transportation
- uva 301 Transportation(回溯)
- uva 301 Transportation (DFS)
- uva 301 - Transportation
- UVA 301 Transportation
- uva 301 Transportation
- Transportation uva 301 为什么错了?
- uva 301 - Transportation
- UVA 301 Transportation
- uva 301 - Transportation
- ( 回溯 )uva 301 - Transportation
- UVA 301 Transportation 。。有点需要思考的回溯、、
- uva301 - Transportation
- UVa 301 - Transportation
- uva 301 - Transportation
- uva 301 Transportation 铁路公司的阳谋 纯dfs暴力
- UVA - 301 Transportation
- UVA - 301 Transportation
- Uva 301 - Transportation
- UVA - 301 Transportation (回溯)