From b3aff5ce01ffa004319c7d3e5a27db963613581c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Fri, 8 Mar 2024 10:24:06 +0800 Subject: [PATCH] 'commit' --- .../ZhongGaoJi/LanQiao15STEMA202401/3.cpp | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/3.cpp diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/3.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/3.cpp new file mode 100644 index 0000000..f21c4e0 --- /dev/null +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/3.cpp @@ -0,0 +1,44 @@ +#include +using namespace std; +/* +测试样例: +abcdefgh + +输出: +aebfcgdh + +思考: +行数:n, 列数:m 需要满足 m>=n +(1) 1行, m=length(abcdefgh)=8 n=1 满足m>=n +(2) 2行, m=length(abcdefgh)/2=8/2=4 n=2 满足m>=n +(3) 3行, 8不能被3整除,跳过 +(4) 4行, m=8/4=2, n=4 m> s; // 生成一个n行m列的矩阵 + // 1、整明白到底是几行几列 + int len = s.size(); + int n = 0; // 最后是几行 + for (int i = 1;; i++) { + if (len % i == 0 && len / i >= i) n = i; + if (len / i < i) break; + } + + int m = len / n; // 每行多少列 + + // 2、做一个二维矩阵存进去 + for (int i = 0; i < n; i++) // 行 + for (int j = 0; j < m; j++) // 列 + a[i][j] = s[(i)*m + j]; + + // 3、从第一列开始,逐列从上下到输出矩阵中的字符 + for (int j = 0; j < m; j++) + for (int i = 0; i < n; i++) + cout << a[i][j]; + + return 0; +} \ No newline at end of file