题目:
int main() { unordered_map<int ,pp> mapp; int m, n; while (cin >> m >> n) { vector<vector<int> > v; int count = 1; int l = 0, r = n - 1, t = 0, b = m - 1; while (1) { for (int i = l; i <= r; ++i) { //v[t][i] = count++; mapp.insert(make_pair(count++, pp(t, i))); } if (++t > b) break; for (int i = t; i <= b; i++) { mapp.insert(make_pair(count++, pp(i, r))); } if (--r < l) break; for (int i = r; i >= l; i--) { mapp.insert(make_pair(count++, pp(b, i))); } if (--b < t) break; for (int i = b; i >= t; i--) { mapp.insert(make_pair(count++, pp(i, l))); } if (++l > r) break; } cout << '['; for (auto x : mapp) { if (x.first % 10 == 7 && (x.first / 10) & 1) { cout<<'['<<x.second.first<<','<<x.second.second<<']'; } } cout << ']'; } return 0; }
给你N行M列的人,他们是一个方阵。左上角是(0,0),右下角是(n-1, m-1),最外圈的人顺时针报数,当他们报的数个位是7并且十位是奇数,就选出来。外圈报完了内圈接着报,一直到所有人都报完,问最后选出来的是哪些。
要求是10<=n,m<=1000,如果输入不合法,那么就是返回空数组
输入
1 | 1010 |
输出
1 | [[7,9],[1,1],[8,2],[7,5],[4,4]] |
全部评论
(0) 回帖