SDIBTOJ1350-最小重量机器设计问题
2012-12-04 14:52
267 查看
题目链接:http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=1350
题目描述:给出n个部件在m个商家的价格,及其制造的重量,求在不大于给定价格d下,最小的重量。
题意分析:很经典的深搜回溯。我加了几组还算强大的测试数据,下列代码中的几个剪枝必须有哦,才能在OJ通过。否则,嘿嘿,等着TLE吧。
代码如下:
#include
#define INF 999999999
int w[22][22]; //存重量
int c[22][22]; //存价格
int v[22]; //存搜索过程中部件的制造商
int s[22]; //存符合条件的最优重量部件的制造商编号
int m, n, d;
int min, minw, maxc;
void DFS( int t, int p, int cnt ){
int i;
if( t > n){
if( cnt < min ){
min = cnt;
for( int i=1; i<=m; i++ )
s[i] = v[i];
}
return ;
}
//当前重量值已经比最小重量值大了,或者现有价格>给定价格,就没有必要继续了
if( cnt >min || d < p ){
return ;
}
for( i=1;i<=m; i++ ){
if( d >= p + c[t][i] ){
v[t] = i;
DFS( t+1, p+c[t][i], cnt+w[t][i] );
}
}
}
int main(){
int i,j;
int tmp,r;
while(scanf( "%d%d%d", &n, &m, &d ) != EOF ){
maxc = minw = 0;
for( i=1; i<=n; i++ ){
for( j=1; j<=m; j++ ){
scanf( "%d", &c[i][j] );
if( j == 1 ) { tmp = c[i][j]; }
else if( tmp < c[i][j] ) { tmp = c[i][j];}
}
maxc += tmp;
}
相关文章推荐
- 回溯法算法思想解决最小机器重量设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题(回溯)
- 回溯法:最小重量机器设计问题(python解决)
- 最小重量机器设计问题 5_1 6_4
- 算法分析最小重量机器设计问题
- 最小机器重量设计问题(回溯法-满m叉树)
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小机器重量设计问题
- 算法 最小重量机器设计问题
- 最小重量机器设计问题
- 回顾下最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- SDIBT 1350 最小重量机器设计问题
- 最小重量机器设计问题 java实现
- 南邮 OJ 1278 最小重量机器设计问题
- 最佳运动员配对问题-婚姻搭配-最小重量机器设计问题-回溯法
- #分支限界法#最小机器重量设计问题(优先队列)