POJ 3278 Catch That Cow 最简单写法
根据题目三个方向进行BFS搜索即可
void solve() { int n, k; cin >> n >> k; vector<int> v(100001, 0x3f3f3f3f); queue<int> q; q.push(n); v[n] = 0; while (!q.empty()) { int np = q.front(); q.pop(); //往前走 int npp = np + 1; if (npp < v.size()) { if (v[npp] > v[np] + 1) { v[npp] = v[np] + 1; q.push(npp); } } //往后走 int npm = np - 1; if (npm >= 0) { if (v[npm] > v[np] + 1) { v[npm] = v[np] + 1; q.push(npm); } } //双倍距离 int npd = np * 2; if (npd < v.size()) { if (v[npd] > v[np] * 2) { v[npd] = v[np] + 1; q.push(npd); } } } cout << v[k] << endl; }