aboutsummaryrefslogtreecommitdiffstats
path: root/1260/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--1260/main.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/1260/main.cpp b/1260/main.cpp
new file mode 100644
index 0000000..c340c79
--- /dev/null
+++ b/1260/main.cpp
@@ -0,0 +1,64 @@
+#include "header.hpp"
+#include <cmath>
+
+class Solution {
+public:
+ static std::vector<std::vector<int>>
+ shiftGrid(std::vector<std::vector<int>> &grid, int k) {
+ if (k == 0) {
+ return grid;
+ }
+
+ auto row_count = grid.size();
+ auto col_count = grid[0].size();
+ std::vector<std::vector<int>> result;
+ result.resize(row_count);
+ for (auto &iter : result) {
+ iter.resize(col_count);
+ }
+
+ /* if (k % grid.size() == 0) { */
+ /* for (auto &iter : grid) { */
+ /* std::copy(iter.begin(), iter.end(), */
+ /* result[((k % grid[0].size()) - 1) % grid.size()].begin());
+ */
+ /* } */
+ /* } */
+
+ for (int i = 0; i < row_count; ++i) {
+ for (int j = 0; j < col_count; ++j) {
+ auto index = ((col_count * i + j + k)) % (col_count * row_count) + 1;
+ auto new_row = std::ceil(static_cast<double>(index) /
+ static_cast<double>(col_count));
+ auto new_col = index - ((new_row - 1) * col_count);
+ result[new_row - 1][new_col - 1] = grid[i][j];
+ std::cout << "index:" << index << " new:" << new_row << "," << new_col
+ << "\n";
+ }
+ }
+ return result;
+ }
+};
+
+void pprint(std::vector<std::vector<int>> &&grid) {
+ for (auto &iter : grid) {
+ for (auto &ya_iter : iter) {
+ std::cout << ya_iter << " ";
+ }
+ std::cout << "\n";
+ }
+ std::cout << "\n";
+}
+
+int main(int argc, char **argv) {
+ std::vector<std::vector<int>> grid1 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
+ std::vector<std::vector<int>> grid2 = {
+ {3, 8, 1, 9}, {19, 7, 2, 5}, {4, 6, 11, 10}, {12, 0, 21, 13}};
+ std::vector<std::vector<int>> grid3 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
+
+ pprint(Solution::shiftGrid(grid1, 1));
+ pprint(Solution::shiftGrid(grid2, 4));
+ pprint(Solution::shiftGrid(grid3, 9));
+
+ return 0;
+}