poj 1248 Safecracker
2012-06-05 13:53
225 查看
//5个for循环,直接暴力就可以过了,对一些重复的字符不进行选择! #include <iostream> #include <string> #include <map> #include <cmath> using namespace std; map<char, int> m; int main() { int target, i, j, k, l, n, len, temp; string str, ans, tmp; bool flag; m['A'] = 1, m['B'] = 2, m['C'] = 3, m['D'] = 4, m['E'] = 5, m['F'] = 6, m['G'] = 7, m['H'] = 8, m['I'] = 9, m['J'] =10, m['K'] = 11, m['L'] = 12, m['M'] = 13, m['N'] = 14, m['O'] = 15, m['P'] = 16, m['Q'] = 17, m['R'] = 18, m['S'] = 19, m['T'] = 20, m['U'] = 21, m['V'] = 22, m['W'] = 23, m['X'] = 24, m['Y'] = 25, m['Z'] = 26; while (cin >> target >> str) { if (target == 0 && str == "END") break; len = str.length(); tmp.clear(); ans.clear(); flag = false; for (i = 0;i < len; i++) { for (j = 0; j < len; j++) { if (i == j) continue; for (k = 0; k < len; k++) { if (k == i || k == j) continue; for (l = 0; l < len; l++) { if (l == k || l == j || l == i) continue; for (n = 0; n < len; n++) { if (n == l || n == k || n == j || n == i) continue; temp = m[str[i]] - pow(double (m[str[j]]), 2) + pow(double (m[str[k]]), 3) - pow(double (m[str[l]]), 4) + pow(double(m[str ]), 5); if (temp == target) { tmp.clear(); tmp.push_back(str[i]); tmp.push_back(str[j]); tmp.push_back(str[k]); tmp.push_back(str[l]); tmp.push_back(str ); if (tmp > ans) { ans = tmp; flag = true; } } } } } } } if (flag) cout << ans << endl; else cout << "no solution" << endl; } system("pause"); }
相关文章推荐
- POJ 1248 Safecracker 水题
- poj 1248 Safecracker(暴力枚举)
- POJ 1248 && HDU 1015 Safecracker(dfs)
- POJ 1248 - Safecracker
- POJ 1248 Safecracker(我的水题之路——五重循环暴力- -!)
- poj 1248 Safecracker
- poj 1248 Safecracker
- POJ1248 Safecracker
- POJ 1248 Safecracker
- POJ 1248 Safecracker 模拟+排序
- POJ 1248 Safecracker
- POJ-1248
- 1248 Safecracker
- poj 1248 Primitive Roots
- poj 1248 水题
- POJ-1248
- POJ 1248
- poj 1248
- 【最短路】变形-- nyoj 1248 海岛争霸、poj 1797 Heavy Transportation
- POJ1248解题报告