附加题用全排列暴力做出来了。。。 void Swap(int &a, int &b) { int temp = a; a = b; b = temp; } void Permutation(vector<int> &vec, int start, int end, vector<vector<int>> &vecBig) { if(start == end) { vecBig.push_back(vec); } else { for(int i = start; i<= end; ++i) { Swap(vec[i], vec[start]); Permutation(vec, start+1, end, vecBig); Swap(vec[i], vec[start]); } } } int main() { int n; cin>>n; vector<vector<int>> vecBig; for(int i = 0; i<=n; ++i) { vector<int> vecTemp; string str; getline(cin, str); for(int j = 0; j< str.size(); ++j) { if(str[j] == ',') str[j] = ' '; } istringstream ss(str); int num; while(ss>>num) { vecTemp.push_back(num); } if(i!= 0) { vecBig.push_back(vecTemp); } } vector<int> vect; for(int i = 0; i< n; ++i) { vect.push_back(i); } vector<vector<int>> vec; Permutation(vect, 0, n-1, vec); int min = 99999; for(int i = 0; i< vec.size(); ++i) { int curMid = 0; vector<int> vect = vec[i]; int pre = vect[0]; for(int j = 1; j<vect.size(); ++j) { int cur = vect[j]; curMid +=vecBig[pre][cur]; pre = cur; } if(curMid<min) min = curMid; } cout<<min<<endl; }
点赞 评论

相关推荐

牛客网
牛客企业服务