7-8 矩阵字符

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

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

第一种:

第二种:

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

输入格式:

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

输出格式:

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

输入样例:

在这里给出一组输入。例如:

复制代码
abcdefgh

输出样例:

在这里给出相应的输出。例如:

复制代码
aebfcgdh

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

复制代码
//#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>

#define MAX 300
char A[MAX];
int num[MAX] = { 0 };
char B[50][50];

int function(int count);

int main()
{
    gets(A);
    int count = strlen(A);
    int panduan = function(count);
    //printf("%d", panduan);
    if (panduan == 1||count == 1||count == 2)
    {
        puts(A);
    }
    else
    {
        int th = 0;
        for (int i = 2; i <= sqrt(count); i++)
        {
            if (count % i == 0)
            {
                num[th] = i;
                th++;
            }
        }
        //printf("%d", num[th - 1]);
        int p = count / num[th - 1];
        //printf("%d\n", p);
        for (int i = 0; i < num[th - 1]; i++)
        {
            for (int j = 0; j < p; j++)
            {
                B[i][j] = A[j + i * p];
            }
            //printf("\n");
        }
        for (int i = 0; i < p; i++)
        {
            for (int j = 0; j < num[th - 1]; j++)
            {
                printf("%c", B[j][i]);
            }
            //printf("\n");
        }
    }
}

int function(int count)
{
    if (count == 1)
        return 0;
    if (count == 2)
        return 1;
    for (int i = 2; i <= sqrt(count); i++)
    {
        if (count % i == 0)
            return 0;
    }
    return 1;
}
相关推荐
工业胶粘剂技术37 分钟前
单组分高温环氧结构胶 K-EP280 完整技术参数与工程选型分析
算法·制造
小欣加油1 小时前
Leetcode31 下一个排列
数据结构·c++·算法·leetcode·职场和发展
_日拱一卒2 小时前
LeetCode:39组合总和
java·算法·leetcode·职场和发展
无限进步_2 小时前
【Linux】进程状态、僵尸与孤儿、进程调度
linux·运维·服务器·开发语言·数据结构·算法
郝学胜-神的一滴2 小时前
力扣 662 :二叉树最大宽度
java·数据结构·c++·python·算法·leetcode·职场和发展
2301_764441332 小时前
基于Stackelberg博弈的分散式库存模型
python·算法·数学建模
qq 13740186112 小时前
医用无菌屏障系统加速老化标准解读:ASTM F1980-2016 全解析
人工智能·算法·加速老化·包装测试·astm·医疗器械包装·无菌屏障系统
wayz112 小时前
Overlap:SLOPE(线性回归斜率)技术指标详解
算法·金融·数据分析·回归·线性回归·量化交易·特征工程
点云兔子2 小时前
舱口检测:从点云到矩形定位的射线投影算法
opencv·算法·点云·舱口检测
小欣加油2 小时前
leetcode169 多数元素
数据结构·c++·算法·leetcode·职场和发展