【题目链接】

OpenJudge NOI 1.8 25:螺旋加密

【题目考点】

1. 进制转换

2. 二维数组

【解题思路】

先cin整型变量读入行列数r与c,再用cin.get()或getchar()吸收一个空格,再使用cin.getline()读入带空格的字符串
遍历字符串,把每个字符转为对应的数字,将数字转为二进制数字,以回形遍历方式填充到二维数组中。
回形遍历的写法可以参考OpenJudge NOI 1.8 23:二维数组回形遍历
最后按行遍历二维数组,输出数字即可。

【题解代码】

解法1:

#include <bits/stdc++.h>
using namespace std;
int r, c, a[25][25], fi, fj;//(fi, fj)焦点位置
int d, dir[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};//右下左上
int main()
{char s[85];cin >> r >> c;getchar();//吸收空格cin.getline(s, 105);int len = strlen(s), num, si, sj;fi = fj = 1;//初始焦点位置为(1,1) memset(a, -1, sizeof(a));//a初值都设为-1 for(int i = 0; i < len; ++i){if(s[i] == ' ')num = 0;elsenum = s[i] - 'A' + 1;int b[6] = {}, bi = 0;//把num转化成的二进制数字填入数组b,b[1]为低位 b[5]为高位for(int a = num; a > 0; a /= 2)b[++bi] = a % 2;for(int j = 5; j >= 1; --j)//从高位遍历到低位 {a[fi][fj] = b[j];//回形填充到数组a si = fi + dir[d][0], sj = fj + dir[d][1];//(si,sj)下一个位置if(si > r || si < 1 || sj > c || sj < 1 || a[si][sj] != -1)//如果下一次移出了范围或下一个位置有值 d = (d + 1) % 4;//改变方向 fi += dir[d][0], fj += dir[d][1];//移动焦点}}for(int i = 1; i <= r; ++i)for(int j = 1; j <= c; ++j)if(a[i][j] == -1)//值为-1的地方应该填充0 a[i][j] = 0;for(int i = 1; i <= r; ++i)for(int j = 1; j <= c; ++j)cout << a[i][j];return 0;
}

OpenJudge NOI 1.8 25:螺旋加密相关推荐

  1. 信息学奥赛一本通 1143:最长最短单词 | OpenJudge NOI 1.7 25

    [题目链接] ybt 1143:最长最短单词 OpenJudge NOI 1.7 25:最长最短单词 [题目考点] 1. 字符串处理 [解题思路] 思路1:将字符串分解为多个单词,而后求出各个单词的长 ...

  2. OpenJudge NOI 1.5 25:求特殊自然数

    [题目链接] OpenJudge NOI 1.5 25:求特殊自然数 [题目考点] 1. 数制 2. 暴力搜索 [解题思路及题解代码] 解法1: 已知某十进制数字在七进制和九进制下是数字顺序相反的三位 ...

  3. 【OpenJudge NOI】题解目录

    [OpenJudge NOI]题解目录 OJ链接:OpenJudge NOI 以下为本人做的OJ题解 针对每一道题我都会给出题目考点.解题思路.题解代码.必要时也会给出不同的解题方法. 如有不足之处, ...

  4. 信息学奥赛一本通 1137:加密的病历单 | OpenJudge NOI 1.7 12

    [题目链接] ybt 1137:加密的病历单 OpenJudge NOI 1.7 12:加密的病历单 [题目考点] 1. 字符串处理 [解题思路] 加密过程有三个工序:循环左移,逆序存储,大小写反转. ...

  5. OpenJudge NOI 1.8 20:反反复复

    [题目链接] OpenJudge NOI 1.8 20:反反复复 [题目考点] 1. 二维数组 [解题思路] 将字符串中字符按照题目要求,一行从左向右,一行从右向左,填入二维数组中.再按列遍历二维数组 ...

  6. 信息学奥赛一本通 1194:移动路线 | OpenJudge NOI 2.6 2718:移动路线

    [题目链接] ybt 1194:移动路线 OpenJudge NOI 2.6 2718:移动路线 [题目考点] 1. 坐标型动态规划 [解题思路] 解法1:递推 设状态数组dp,dp[i][j]表示从 ...

  7. OpenJudge NOI 3.3 3340:RPN Calculator

    [题目链接] OpenJudge NOI 3.3 3340:RPN Calculator [题目翻译] 逆波兰表示法计算器 描述 逆波兰表示法与波兰表示法类似.波兰表示法是由波兰数学家扬·武卡谢维奇于 ...

  8. 信息学奥赛一本通 1193:吃糖果 | OpenJudge NOI 2.6 1944:吃糖果

    [题目链接] OpenJudge NOI 2.6 1944:吃糖果 注:ybt 1193:吃糖果 页面打不开,可以在OpenJudge做该题. [题目考点] 1. 递推/递归 2. 搜索 [解题思路] ...

  9. 信息学奥赛一本通 1226:装箱问题 | OpenJudge NOI 4.6 19:装箱问题

    [题目链接] ybt 1226:装箱问题 OpenJudge NOI 4.6 19:装箱问题 [题目考点] 1. 贪心 [解题思路] 该题说是三维立方体,实际上无论是包裹还是产品,高度都是h,因而不用 ...

最新文章

  1. 数据库开发基本操作-数据库基础知识
  2. mysql fetch时间太长_sql_trace用法,fetch太多行需要运行很久怎么解决?
  3. 安装libtiff包 Python3
  4. [python调试笔记] 编译运行h5py
  5. sticky-footer实现记录
  6. 前端学习(1614):oracle数据库管理
  7. QT学习笔记(一):VS2013 +QT 5.8 运行、编译问题解决
  8. Linux系统:centos7下搭建Nginx和FastDFS文件管理中间件
  9. 中信国健临床通讯2011年1月第1期目录
  10. python中的关键字---2(函数基础类)
  11. Automysqlbackup: WARNING: Turning off multicore support, since pigz isn’t there.
  12. html 判断IE版本并加载对应的css,js
  13. 使用Word 中的模板
  14. Bootstrap INSPINIA 2.9.3 – 响应式管理模板
  15. 拿出大把真金白银回购护盘,真心实意的格力,为何买不到股民信任
  16. 细数魔兽争霸作弊工具排行
  17. 网卡收到一个数据包的时候,是如何传给应用层的
  18. 嵌入式学习为什么要选择4412开发板
  19. 微信小程序优选驾考驾照考试预约+后台管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】
  20. 【ninja】Windows下安装ninja环境

热门文章

  1. 一个 redis 异常访问引发 oom 的案例分析
  2. JQuery data API实现代码分析
  3. 25,000,000 行的代码就问你敢不敢动?!
  4. 为什么程序员的女朋友或老婆颜值普遍都偏高?
  5. 漫画:下辈子你还当程序员么?
  6. Tomcat启动报Error listenerStart错误
  7. 自动化集成:Docker容器入门简介
  8. imgageJ开发【Java】
  9. RedHat系列软件管理(第二版) --二进制软件包管理
  10. SQL SERVER中的纵横查询