测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A33642. 字符矩阵

填空题 困难

题目描述

字符矩阵

题目描述:

给定一个仅包含小写字母的字符串S,用这些字符恰好排成一个n 行m 列的矩阵(m≥n),请找出所有符合要求的矩阵中最接近于正方形的那个矩阵。然后从第一列开始,逐列按照从上到下的顺序输出矩阵中的字符。

例如:

S = "abcdefgh"。按要求m≥n 有如下两种矩阵:

第一种:

第二种:

最接近正方形的矩阵是第一种。从第一列开始,逐列按照从上到下的顺序输出矩阵中的字符,结果为:aebfcgdh。

输入描述

输入一个字符串,仅包含小写字母且长度不超过200

输出描述

请找出符合题目要求的最接近正方形的字符矩阵,从第一列开始,逐列按照从上到下的

顺序输出矩阵中的字符

样例输入

abcdefgh

样例输出

aebfcgdh

参考答案

#include <bits/stdc++.h> using namespace std; string s; char a[201][201]; int main() { cin>>s; int ls=s.size(); int n,m,k; for(n=sqrt(ls);n>=1;n--){ m=ls/n; if(n*m==ls)break; } k=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ a[i][j]=s[k];k++; } } for(int j=1;j<=m;j++) for(int i=1;i<=n;i++) cout<<a[i][j]; return 0; }
上一题 下一题