当前位置: 首页 > news >正文

PTA L1-039 古风排版

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:

按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。

输入样例:

4
This is a test case

输出样例:

asa T
st ih
e tsice s

 这题总体思路不难,就是改变原字符串的排序,再输出;

这题我先是自己做了一种,之后因为自我完善string用法,又去学习其他人代码又重新写了一种思路,以下是我做了两次后总结的本体需要的注意点

1.若使用的是类似于我第一种的方法,则需要关注,新开数组的列数。

2.若使用第一种方法,则需要注意字符数组的初始需要先遍历一遍,将初始设为空

3.若使用第二种方法,则需要注意最后一列的输出空的特殊部分

4.注意换行以及首先要捋清楚,无论是新字符赋值过程的行列数的变化方式,还是输出时候的行列变化,一定要根据前赋值对应后面的输出;

话不多说,上代码

方法1(字符数组,无脑赋值遍历,注意好行列的变化方式即可)

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;getchar();string s;getline(cin,s);int k;if(s.size()%n==0) k=s.size()/n;else k=s.size()/n+1;//设定好二维字符数组的列大小char str[n+5][k];int cnt=0;for(int i=0;i<n;i++){str[i][0]=' ';}for(int j=k-1;j>=0;j--){for(int i=0;i<n;i++){str[i][j]=s[cnt];cnt++;if(cnt==s.size()) break;//判定最后一列的,读完后结束循环(因为未读取部分初始设的就是空,所以此处无需多余处理)}}for(int i=0;i<n;i++){for(int j=0;j<k;j++){cout<<str[i][j];}cout<<endl;}return 0;
}

方法2(string的二维用法,行列的理解可能会比方法一有点绕)

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;getchar();string s;getline(cin,s);string str[n];for(int i=0;i<n;i++){for(int j=i;j<s.size();j+=n){str[i]+=s[j];}}for(int i=0;i<n;i++){if(str[i].size()<str[0].size()) cout<<" ";//最后一列超出的部分输出空格for(int j=str[i].size()-1;j>=0;j--)//倒叙{cout<<str[i][j];}cout<<endl;}return 0;
}

创作不易,点个赞吧家人们 

http://www.lryc.cn/news/522656.html

相关文章:

  • Docker 镜像加速的配置
  • 简历_使用优化的Redis自增ID策略生成分布式环境下全局唯一ID,用于用户上传数据的命名以及多种ID的生成
  • PHP的HMAC_SHA1和HMAC_MD5算法方法
  • 二进制/源码编译安装mysql 8.0
  • 2025-1-15-十大经典排序算法 C++与python
  • 头盔识别技术
  • DeepSeek-v3在训练和推理方面的优化
  • 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(3 纯python的经济方案)
  • 1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)
  • 闪豆多平台视频批量下载器
  • 深入解析:如何用Java爬取淘宝分类详情接口(cat_get)
  • 语音识别的预训练模型
  • element-ui制作多颜色选择器
  • JVM体系结构
  • wandb使用遇到的一些问题
  • Java中的继承
  • Cadence笔记--原理图导入PCB
  • 从AI生成内容到虚拟现实:娱乐体验的新边界
  • 【Linux】gdb_进程概念
  • 安全类脚本:拒绝ssh暴力破解
  • Android15源码编译问题处理
  • 图解Git——分布式Git《Pro Git》
  • Linux内核编程(二十一)USB应用及驱动开发
  • 什么是数据仓库?
  • 计算机网络 (48)P2P应用
  • SK海力士(SK Hynix)是全球领先的半导体制造商之一,其在无锡的工厂主要生产DRAM和NAND闪存等存储器产品。
  • FunASR 在Linux/Unix 平台编译
  • git操作(Windows中GitHub)
  • 物联网网关Web服务器--Boa服务器移植与测试
  • vue3学习日记8 - 一级分类