Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 20th, 2010 | Syntax: C++ | Size: 1.29 KB | Hits: 56 | Expires: Never
This paste has a previous version, view the difference. Copy text to clipboard
  1. #include <boost/lambda/lambda.hpp>
  2. #include <iostream>
  3. #include <vector>
  4. #include <iterator>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11.         vector<int> v;
  12.         vector<int> ret;
  13.         ret.resize(6);
  14.         v.resize(6);
  15.         v[0]=0;
  16.         v[1]=1;
  17.         v[2]=2;
  18.         v[3]=3;
  19.         v[4]=4;
  20.         v[5]=5;
  21.         int M1[6] = {6, 115, 47, 118, 19, 34};
  22.         int M2[6] = {11, 48, 35, 46, 85, 91 };
  23.         int K1[6];
  24.         int K2[6];
  25.         int min = 1000;
  26.         do
  27.         {
  28.                 K1[0]= M1[v[0]];
  29.                 K1[1]= K1[0] + M1[v[1]];
  30.                 K1[2]= K1[1] + M1[v[2]];
  31.                 K1[3]= K1[2] + M1[v[3]];
  32.                 K1[4]= K1[3] + M1[v[4]];
  33.                 K1[5]= K1[4] + M1[v[5]];
  34.  
  35.                 K2[0] = K1[0] + M2[v[0]];
  36.                
  37.                 if(K1[1]<K2[0])
  38.                         K2[1] = K2[0] + M2[v[1]];
  39.                 else
  40.                         K2[1] = K1[1] + M2[v[1]];
  41.  
  42.                 if(K1[2]<K2[1])
  43.                         K2[2] = K2[1] + M2[v[2]];
  44.                 else
  45.                         K2[2] = K1[2] + M2[v[2]];
  46.  
  47.                 if(K1[3]<K2[2])
  48.                         K2[3] = K2[2] + M2[v[3]];
  49.                 else
  50.                         K2[3] = K1[3] + M2[v[3]];
  51.  
  52.                 if(K1[4]<K2[3])
  53.                         K2[4] = K2[3] + M2[v[4]];
  54.                 else
  55.                         K2[4] = K1[4] + M2[v[4]];
  56.  
  57.                 if(K1[5]<K2[4])
  58.                         K2[5] = K2[4] + M2[v[5]];
  59.                 else
  60.                         K2[5] = K1[5] + M2[v[5]];
  61.  
  62.                 if(K2[5] < min)
  63.                 {
  64.                         min=K2[5];
  65.                         for(int i=0; i<6; ++i)
  66.                                 ret[i]=v[i];
  67.                 }
  68.         }
  69.         while(next_permutation(v.begin(), v.end()));
  70.                
  71.         for(int i=0; i<6; ++i)
  72.         {
  73.                 std::cout<<(ret[i]+1)<<std::endl;
  74.         }      
  75.         std::cout<<min<<std::endl;
  76.         return 0;
  77. }