http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=111969
有一个房子,房子两侧有1和2两个商店,一个人要从房子出发到1和2商店买东西再回到房子,给出路径长度d1 d2 d3(就是图中的10 20 30)
路可以重复走也可以不走,问怎么走路最短
一共就这么几种走的方法:
从房子出发一次走过三条路d1 d2 d3就可以遍历回家。
也可能因为某条路极其的长而选择重复走其他的路以避免走这条路:
比如d1非常长,就可以先走d2去店2,走d3去店1,走d3回到店2,走d2回到家。
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int d1, d2, d3; 5 int sum[5]; 6 7 int main(){ 8 while(~scanf("%d%d%d", &d1, &d2, &d3)){ 9 sum[0] = d1+d2+d3; 10 sum[1] = (d2+d3)*2; 11 sum[2] = (d1+d3)*2; 12 sum[3] = (d1+d2)*2; 13 sort(sum, sum+4); 14 printf("%d ", sum[0]); 15 memset(sum, 0, sizeof(sum)); 16 } 17 18 return 0; 19 }