字母旋转游戏
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 8574   Accepted: 3236

Description

给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。例如,当M=5,N=8时,矩阵中的内容如下:

   A   B   C   D   E   F   G   HV   W   X   Y   Z   A   B   IU   J   K   L   M   N   C   JT   I   H   G   F   E   D   KS   R   Q   P   O   N   M   L

Input

M为行数,N为列数,其中M,N都为大于0的整数。

Output

分行输出相应的结果

Sample Input

4 9

Sample Output

   A   B   C   D   E   F   G   H   IV   W   X   Y   Z   A   B   C   JU   J   I   H   G   F   E   D   KT   S   R   Q   P   O   N   M   L

问题链接:POJ3752 字母旋转游戏。

问题描述:参见上文。

问题分析

  直接模拟,需要解决二维数组遍历和下标计算。对于输入的m和n,不知道其范围,需要一个动态的存储。

程序说明

使用vector实现一个动态的二维数组matrix[][],是一个非常有效的做法。定义数组的代码中包含了数组的初始化。

计算下一个字符,计算下一个坐标的逻辑是套路。

还需要注意的是,按照题意需要输出3个空格来隔开字母,不然就会出现格式错误。

AC的C++语言程序如下:

/* POJ3752 字母旋转游戏 */#include <iostream>
#include <vector>using namespace std;const int ARROWS = 4;
const int RIGHT = 0;
const int DOWN = 1;
const int LEFT = 2;
const int UP = 3;int main()
{int m, n;// 输入数据cin >> m >> n;vector<vector<char> > matrix(m, vector<char>(n, ' '));// 填充处理int arrow = RIGHT, row = 0, col = 0;char c = 'A';for(int i=1; i<=m*n; i++) {matrix[row][col] = c;// 计算下一个字母if(++c > 'Z')c = 'A';// 计算下一个位置if(arrow == RIGHT) {if(col + 1 == n) {row++;arrow = (arrow + 1) % ARROWS;} else if(matrix[row][col+1] != ' ') {row++;arrow = (arrow + 1) % ARROWS;} elsecol++;} else if(arrow == DOWN) {if(row + 1 == m) {col--;arrow = (arrow + 1) % ARROWS;} else if(matrix[row+1][col] != ' ') {col--;arrow = (arrow + 1) % ARROWS;} elserow++;} else if(arrow == LEFT) {if(col == 0) {row--;arrow = (arrow + 1) % ARROWS;} else if(matrix[row][col-1] != ' ') {row--;arrow = (arrow + 1) % ARROWS;} elsecol--;} else if(arrow == UP) {if(row == 0) {col++;arrow = (arrow + 1) % ARROWS;} else if(matrix[row-1][col] != ' ') {col++;arrow = (arrow + 1) % ARROWS;} elserow--;}}// 输出结果for(int i=0; i<m; i++) {for(int j=0; j<n; j++)cout << "   " << matrix[i][j];cout << endl;}return 0;
}

POJ3752 字母旋转游戏【水题】相关推荐

  1. NUC1422 字母旋转游戏【水题】

    字母旋转游戏 时间限制: 1000ms 内存限制: 65535KB 通过次数: 2总提交次数: 5 问题描述 给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在 ...

  2. hdu-5867 Water problem(水题)

    题目链接: Water problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  3. 1251: 字母图形 [水题]

    1251: 字母图形 [水题] 时间限制: 1 Sec 内存限制: 128 MB 提交: 140 解决: 61 统计 题目描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG B ...

  4. week11——作业(水题+背包问题)

    目录 买房子: 问题描述 题目简述 输入/输出格式 样例 问题分析 解题思路 参考代码 心得体会 排方阵: 问题描述 题目简述 输入/输出格式 样例 问题分析 解题思路 参考代码 心得体会 凯撒密码: ...

  5. CF Round #426 (Div. 2) The Useless Toy 思维 水题

    题目链接: http://codeforces.com/contest/834/problem/A 题目描述: 输入起始状态和结束状态和数列长度, 判断旋转方向是顺时针逆时针还是不合理 解题思路: 长 ...

  6. hdu3793 判断对称(水题)

    题意:       给你一个串,问你这个串是不是关于某个字母对称的,这个串是一个首位相接的圆. 思路:       水题,直接枚举每一个为对称点试一下就行了,不解释了. #include<std ...

  7. hdu 2025:查找最大元素(水题,顺序查找)

    查找最大元素 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. 1001 字符串“水”题(二进制,map,哈希)

    1001: 字符串"水"题 时间限制: 1 Sec  内存限制: 128 MB 提交: 210  解决: 39 [提交][状态][讨论版] 题目描述 给出一个长度为 n 的字符串( ...

  9. CodeForces - 1141D Colored Boots(暴力+水题)

    题目链接:点击查看 题目大意:给出两个字符串s和t,两个字符串中相同的字母可以匹配,问号可以和任意字符匹配,现在问两个字符串最多能匹配多少个字符,并给出匹配的下标 题目分析:挺好玩的一道水题,大体思路 ...

最新文章

  1. 2D池化IPoolingLayer
  2. linux查看密码配置文件,如何在Linux上查看和配置密码时效
  3. android 从文件制定位置读取数据
  4. 高端服务器CPU详细图解
  5. empt注意事项 php_PHP编程注意事项
  6. linux服务器组件有哪些,推荐几个linux服务器面板
  7. html图片自动切换的幻灯片效果的,js带点自动图片轮播幻灯片特效代码分享
  8. 2.2基本算法之递归和自调用函数_7592 求最大公约数问题
  9. golang 用range 创建指针数组
  10. react typescript 父组件调用子组件
  11. C++智能指针shared_ptr使用实例
  12. 微信登录功能的实现直接复制就能使用(封装)
  13. shenyu2.5.0对restful的path中文不支持,400错误解决
  14. 计算机组装实验硬盘分区方法,硬盘怎么分区和格式化 史上最详细的硬盘分区方法大全 (全文)...
  15. TC气象数据下载包括NCEP的FNL(python脚本)、STI的Best_track、NOAA的SST
  16. 螺旋传动设计系统lisp_螺旋传动的设计计算.pdf
  17. Rust websocket 客户端实现
  18. 【Java】2.Java体系架构(SE的组成概念图)
  19. 【前端必备项目】品优购商城前端
  20. 如何提取fq.gz中的文件_什么是GZ文件类型或扩展名? 如何创建,提取和打开Gz文件?...

热门文章

  1. AIRSDK 3.7 加载远程的含有代码的swf文件
  2. Java aio(异步网络IO)初探
  3. linux下使用gpio控制代码,zynq linux 下控制gpio的c代码
  4. 页面报错500是什么意思_解决方案:品牌备案后,上传产品报错5461,A+页面报错...
  5. ubuntu PyCharm的安装
  6. 人工与计算机解决问题的异同,1.1计算机解决问题的过程ppt课件 .ppt
  7. 问题记录:既然MAC能唯一标识一台设备,那为什么我们还需要IP呢?
  8. dropdownlist三级联动怎么实现_简单三步,轻松搞定一级、二级、三级下拉菜单
  9. Linux 完全卸载重装opencv
  10. 基于gstreamer的支持动态获取多路流的rtsp server(笔记)