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;
}
上一题
下一题