分析:

  1. 首先你要明白第一件事:所有要打印东西的题目打印都是从第一行到最后一行,从第一列到最后一列,你是没办法跳着打印的。可以看看其他几个打印题目1008元素循环右移,1050 螺旋矩阵1027 打印沙漏
  2. 观察要求打印的东西能否直接通过循环之间行列关系和要打印东西的个数和位置关系直接打印出来如:1027 打印沙漏,可以,元素循环右移可以。但是显然1050 螺旋矩阵1109 擅长C都不行,那我们该怎么办呢?有一种方法就是通过容器储存下来,打印没办法拐着弯来,那访问容器总行了把。
  3. 既然按照位置存好了那就一切好办了

来:先看题目

1109 擅长C

当你被面试官要求用 C 写一个“Hello World”时,有本事像下图显示的那样写一个出来吗?



输入格式:

输入首先给出 26 个英文大写字母 A-Z,每个字母用一个 7×5 的、由 C 和 . 组成的矩阵构成。最后在一行中给出一个句子,以回车结束。句子是由若干个单词(每个包含不超过 10 个连续的大写英文字母)组成的,单词间以任何非大写英文字母分隔。题目保证至少给出一个单词。

输出格式:

对每个单词,将其每个字母用矩阵形式在一行中输出,字母间有一列空格分隔。单词的首尾不得有多余空格。相邻的两个单词间必须有一空行分隔。输出的首尾不得有多余空行。

点击查看代码
输入样例:
..C..
.C.C.
C...C
CCCCC
C...C
C...C
C...C
CCCC.
C...C
C...C
CCCC.
C...C
C...C
CCCC.
.CCC.
C...C
C....
C....
C....
C...C
.CCC.
CCCC.
C...C
C...C
C...C
C...C
C...C
CCCC.
CCCCC
C....
C....
CCCC.
C....
C....
CCCCC
CCCCC
C....
C....
CCCC.
C....
C....
C....
CCCC.
C...C
C....
C.CCC
C...C
C...C
CCCC.
C...C
C...C
C...C
CCCCC
C...C
C...C
C...C
CCCCC
..C..
..C..
..C..
..C..
..C..
CCCCC
CCCCC
....C
....C
....C
....C
C...C
.CCC.
C...C
C..C.
C.C..
CC...
C.C..
C..C.
C...C
C....
C....
C....
C....
C....
C....
CCCCC
C...C
C...C
CC.CC
C.C.C
C...C
C...C
C...C
C...C
C...C
CC..C
C.C.C
C..CC
C...C
C...C
.CCC.
C...C
C...C
C...C
C...C
C...C
.CCC.
CCCC.
C...C
C...C
CCCC.
C....
C....
C....
.CCC.
C...C
C...C
C...C
C.C.C
C..CC
.CCC.
CCCC.
C...C
CCCC.
CC...
C.C..
C..C.
C...C
.CCC.
C...C
C....
.CCC.
....C
C...C
.CCC.
CCCCC
..C..
..C..
..C..
..C..
..C..
..C..
C...C
C...C
C...C
C...C
C...C
C...C
.CCC.
C...C
C...C
C...C
C...C
C...C
.C.C.
..C..
C...C
C...C
C...C
C.C.C
CC.CC
C...C
C...C
C...C
C...C
.C.C.
..C..
.C.C.
C...C
C...C
C...C
C...C
.C.C.
..C..
..C..
..C..
..C..
CCCCC
....C
...C.
..C..
.C...
C....
CCCCC
HELLO~WORLD!

输出样例:

点击查看代码
C...C CCCCC C.... C.... .CCC.
C...C C.... C.... C.... C...C
C...C C.... C.... C.... C...C
CCCCC CCCC. C.... C.... C...C
C...C C.... C.... C.... C...C
C...C C.... C.... C.... C...C
C...C CCCCC CCCCC CCCCC .CCC. C...C .CCC. CCCC. C.... CCCC.
C...C C...C C...C C.... C...C
C...C C...C CCCC. C.... C...C
C.C.C C...C CC... C.... C...C
CC.CC C...C C.C.. C.... C...C
C...C C...C C..C. C.... C...C
C...C .CCC. C...C CCCCC CCCC.

我的代码:

#include<bits/stdc++.h>
using namespace std;
void print(string a,string b[]){
for(int i=0;i<7;i++){
for(int j=0;j<a.size();j++){
if(j<a.size()-1)
cout<<b[a[j]-'A'].substr(i*6,6);
else
cout<<b[a[j]-'A'].substr(i*6,5);
}
cout<<endl;
}
}
int main(){
string a[26];
for(int i=0;i<26;i++){
char c[43];
int k=0;
while(k<42){
scanf("%c",&c[k]);
if(c[k]=='\n')c[k]=' ';
k++;
}
c[42]='\0';
a[i]=c;
}
//cout<<a[1];
string b;getline(cin,b);
vector<string>vvv;
int late=0,tag=0;
for(int i=0;i<b.size();i++){
if((b[i]>'Z'||b[i]<'A')){
if(tag){
vvv.push_back(b.substr(late,i-late));late=i+1;tag=0;
}
else
late=i+1;
}
else{
tag=1;
}
}
if(late<b.size())vvv.push_back(b.substr(late));//注意后面的没有结束符号如HELLO~WORLD AAA
for(int kkk=0;kkk<vvv.size();kkk++){
print(vvv[kkk],a);
if(kkk<vvv.size()-1)cout<<endl;
}
return 0;
}

1050 螺旋矩阵

本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N;m≥n;且 m−n 取所有可能值中的最小值。

输入格式:

输入在第 1 行中给出一个正整数 N,第 2 行给出 N 个待填充的正整数。所有数字不超过 10^4,相邻数字以空格分隔。

输出格式:

输出螺旋矩阵。每行 n 个数字,共 m 行。相邻数字以 1 个空格分隔,行末不得有多余空格。

输入样例:
12
37 76 20 98 76 42 53 95 60 81 58 93
输出样例:
98 95 93
42 37 81
53 20 76
58 60 76

我的代码

#include<bits/stdc++.h>
using namespace std;
bool compa(int a,int b){
return a>b;}
int c[10000][105]={0};
int main (){
int n;cin>>n;
int a[10001];
for(int i=0;i<n;i++){scanf("%d",&a[i]);}
sort(a,a+n,compa);
int n2,m1;
for(n2=sqrt((double)n);n2>=1;n2--)
{
if(n%n2==0)
{
m1=n/n2;
break;
}
}
int cnt=0;
for(int i=0;;i++){
for(int j=i;j<n2&&c[i][j]==0&&cnt<n;j++){
c[i][j]=a[cnt++];
}
for(int j=i+1;j<m1&&c[j][n2-i-1]==0&&cnt<n;j++){
c[j][n2-i-1]=a[cnt++];
}
for(int j=n2-i-2;j>=0&&c[m1-1-i][j]==0&&cnt<n;j--){
c[m1-1-i][j]=a[cnt++];
}
for(int j=m1-i-2;j>=0&&c[j][i]==0&&cnt<n;j--){
c[j][i]=a[cnt++];
}
if(cnt==n)break;
}
for(int i = 0;i<m1;i++){
for(int j=0;j<n2;j++){
printf("%d",c[i][j]);
if(j<n2-1)printf(" ");
}
printf("\n");
} return 0;
}

待会闲下来再更新分析

分析总结一下所有有关打印题目的套路和思路:pat乙级:1109 擅长C, 1008元素循环右移,1050 螺旋矩阵,1027 打印沙漏等等的更多相关文章

  1. PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌

    -自测1. 打印沙漏() 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号 ...

  2. shell练习--PAT题目1008:数组元素循环右移问题 (失败案例,运行超时)

    一个数组A中存有N(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥)个位置,即将A中的数据由(A​0​​A​1​​⋯A​N−1​​)变换为(A​N−M​​⋯A​N−1​​A ...

  3. PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)

    PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)  http://www.patest.cn/contests/pat-b-practise/1027 本题 ...

  4. c++刷题(43/100)矩阵旋转打印

    题目1:矩阵旋转打印 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则 ...

  5. PAT(B) 1027 打印沙漏(Java)

    题目链接:1027 打印沙漏 (20 point(s)) 题目描述 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * ...

  6. PAT乙级 1027. 打印沙漏(20)

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  7. PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  8. PAT-乙级-1027. 打印沙漏(20)

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  9. PAT 乙级 1027 打印沙漏(20) C++版

    1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...

  10. [1.16更新B14特征处理]津南数字制造题目解读及部分思路~~有趣的特征

    [1.16更新B14特征处理]津南数字制造题目解读及部分思路--有趣的特征 Article onion啦啦啦 2019-01-17 16:03:38 11 1790 11 首先声明,我并不能保证这些特 ...

随机推荐

  1. day35-JSON&Ajax03

    JSON&Ajax03 4.jQuery的Ajax请求 原生Ajax请求问题分析: 编写原生的Ajax要写很多的代码,还要考虑浏览器兼容问题,使用不方便 在实际工作中,一般使用JavaScri ...

  2. 网络爬虫之requests模块,自动办公领域之openpyx模块

    一.第三方模块的下载与使用 第三方模块:别人写的模块,一般情况下功能都特别强大    我们如果想使用第三方模块,第一次必须先下载,后面才可以反复使用(等同于内置模块) 下载第三方模块的方式 1. pi ...

  3. JavaScript:七大基础数据类型:字符串string

    在JS中,字符串类型的数据,有三种表达方式,但是无一例外都是需要引号扩起来的: 单引号'hello' 双引号"hello" 反引号`hello` 注意: 因为JS没有字符类型,这一 ...

  4. Python实验报告(第13章)

    实验13:Pygame游戏编程 一.实验目的和要求 学会Pygame的基本应用 二.Pygame的优点及应用 使用Python进行游戏开发的首选模块就是Pygame,专为电子游戏设计(包括图像.声音) ...

  5. [R语言] ggplot2入门笔记2—通用教程ggplot2简介

    文章目录 通用教程简介(Introduction To ggplot2) 2 ggplot2入门笔记2-通用教程ggplot2简介 1. 了解ggplot语法(Understanding the gg ...

  6. Redis-02 Redis 类型

    Redis List 命令 说明 例子 LPush 在 List 头插入一个或多个元素 LPush mylist hello RPush 在 List 尾插入一个或多个元素 RPush mylist ...

  7. Windows下的SSH Server

    (请注意,本文内容以杂谈为主,稍微提及了一些在MobaXterm中开启SSH Server可能遇到的情况和解决方法,没有多少干货,请酌情查看,谢谢) 最近比较无聊,使用MobaXterm,无聊翻看里面 ...

  8. Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level

    云服务器很久没管过了,今天去看了下云服务器日志,不看不知道,一看吓一跳. 日志里竟然是一排的报错,再翻下此前的日志,每天都报一个错误: [http-nio-80-exec-10] org.apache ...

  9. Hexo博客搭建记录

    Hexo博客搭建记录 参考视频:手把手教你从0开始搭建自己的个人博客 |无坑版视频教程 以下命令操作建议使用管理员权限完成 1. nodejs & hexo 安装 1.首先下载node.js, ...

  10. Linux C 打印变量数组内容到一个文件中的方法。

    思路: 1.以追加的方式新建打开一个文件 2.将buf 按字节,先将整型转换为字符串,之后写入到文件中. memset(tmp_buf, 0, sizeof(tmp_buf)); sprintf(tm ...