前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OJ刷题记录:L1-206-学霸递情书(15分)

OJ刷题记录:L1-206-学霸递情书(15分)

作者头像
英雄爱吃土豆片
发布2020-10-29 11:04:00
6330
发布2020-10-29 11:04:00
举报
文章被收录于专栏:英雄爱吃土豆片

L1-206-学霸递情书(15分)

题目要求: 李雷和韩梅梅坐前后排。上课想说话怕老师发现,所以改为传小纸条。为了被老师发现他们纸条上说的是啥,他们约定了如下方法传递信息: 将26个英文字母(全为大写),外加空格,一共27个字符分成三组,每组9个。也就是ABCDEFGHI是第一组,JKLMNOPQR是第二组,STUVWXYZ是第三组(此处用代表空格)。 然后根据传递纸条那天的日期,改变字母的位置 先根据月份数m, 以整个分组为单位进行循环左移,移动(m-1)次。然后根据日期数d,对每个分组内的字符进行循环左移,移动(d-1)次。 例如:以3月8号为例,首先移动分组,3月需要循环左移2次,变成:STUVWXYZ*,ABCDEFGHI,JKLMNOPQR 然后对每组内的字符,8日需要循环左移7次,最终编程: Z*STUVWXY,HIABCDEFG,QRJKLMNOP 对于需要传递信息中的每个字符。用组号和组内序号两个数字来表示。 如果在3月8号需要传递信息为“HAPPY”,那么H位于第2组第1个,A位于第2组第3个…依次类推。所以最终纸条上写成: 21 23 39 39 19 现给定日期和需要传递的信息,请输出应该写在纸条上的编码。 输入 每个输入包含两行。 第一行是用空格分隔的两个数字,分别代表月份和日子。输入保证是一个合法的日期 第二行为需要编码的信息字符串,仅由大写字母A~Z和空格组成,字符串长度不超过1024个字符。 输出 对每个输入,打印对应的编码,数字之间用空格分隔,每个输出占一行。 样例输入 Copy 3 8 HAPPY 样例输出 Copy 21 23 39 39 19

解题思路: 分别完成数组的平移和数组内字符串的平移后,遍历输入的字符串,在数组内寻找并判断(此时相当于一个二维数组),若数组内的字符等于输入的字符串内的字符,输出此时数组内字符的坐标。

需要注意: 在进行向左平移时,需要先对平移的步数用数组长度进行取余,否则会造成数组越界。

通关代码:

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

template<typename T> 
T moveArr(T arr, int n) {
	int LEN = arr.size();
	n = n % LEN;
	
	reverse(arr.begin(), arr.begin() + n);
	reverse(arr.begin() + n, arr.end());
	reverse(arr.begin(), arr.end());
	
	return arr;
}

int main() {
	vector<string> arr = {"ABCDEFGHI", "JKLMNOPQR", "STUVWXYZ "};
	int month, day;
	string str;
	
	cin >> month >> day;
	
	arr = moveArr<vector<string>>(arr, month - 1);
	
	for (int i = 0; i < 3; i++) {
		arr[i] = moveArr<string>(arr[i], day - 1);
	}
	
	cin.ignore();
	getline(cin, str);
	
	int LEN = str.size();
	for (int i = 0; i < LEN; i++) {
		for (int j = 0; j < 3; j++) {
			for (int k = 0; k < 9; k++) {
				if (arr[j][k] == str[i]) {
					cout << j + 1 << k + 1 << ' ';
				}
			}
		}
	}
	
	return 0;
}

通关截图:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • L1-206-学霸递情书(15分)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档