C-偶遇行军蚁(遇到过的题,做个笔记)

2024-04-02 23:04

本文主要是介绍C-偶遇行军蚁(遇到过的题,做个笔记),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我的代码:

思路就是把每一行看成一个字符串,然后逐渐增加字符就行

#include <iostream>
#include <vector>
using namespace std;
int main()
{string s;int n;cin >> n;			//读入行数cin >> s;			//读入字符串vector<string>arr(n);		//定义string类数组if (n == 1)			//发现只弄成1行,则直接原样输出就行{cout << s << endl;;return 0;}int now = 0;	//现在所在行int dx = 1;			//行偏移量for (int i = 0; i < s.size(); i++){arr[now] += s[i];			//将该行字符串加上字符now += dx;				//挪动所在行if (now == 0 || now == n-1)	dx = -dx;		//如果到第一行或最后一行,行偏移要取反}for (int i = 0; i < n; i++)cout << arr[i];return 0;
}

以前写的题解(不是很好)

#include <iostream>
#include <vector>			//为了使用vector容器
using namespace std;
int main()
{int n;			//多少行string s;			//要输入的字符串cin >> n;cin >> s;vector<vector<char>>arr(n, vector<char>(1005));	//用vector容器弄二维数组,n行,列数先填大些,后续会判断到底多少列,默认数组里的量全是0int x = 0;			//arr数组的横坐标int y = 0;			//arr数组的纵坐标int k = 0;				//用来对字符串s进行索引int list_num = 0;			//定义arr数组的实际列数if(n==1)			//特殊判断{cout<<s;return 0;}while (1)			//不知道循环几次就死循环,到时候跳过{int flag = 1;		//1代表还没终止(还没到字符串最后)for (int i = 0; i < n && flag == 1; i++)		//往下走,只要没终止就一直把字符串s的量填到arr数组中{							//因为有n行,所以循环n次arr[x++][y] = s[k++];		//沿着路径往下走,注意是后自增(画图,手写坐标就明白了)if (k == s.size())			//当k==字符串s的大小,则表示字符串的量全填进arr数组中了{flag = 0;		//0代表终止了,到字符串最后了break;			//跳出for循环}}list_num++;		//沿着路径一直往下走的走完了,让实际列数list_num加1x = x - 2;		//若n为4,则这里时,x为4,-2后,x变为2,,这么是为了下面的后自增(画图,自己手写坐标就知道了)y = y + 1;		//若n为4,则这里时,y为0.+1后,y=1,这么是为了下面的后自增(画图,自己手写坐标就知道了)for (int i = 0; i < n - 2 && flag == 1; i++)//该斜着走,循环次数是n-2次,只要没终止就一直把字符串s的量填到arr数组中{list_num++;		//因为斜着走,实际列数必定每次循环都会加1arr[x--][y++] = s[k++];	//沿着路径该斜着走了,注意是后自增(画图,手写坐标就明白了)if (k == s.size()){flag = 0;break;}}if (flag == 0)	break;	//当终止了(即到字符串最后了)结束while死循环}for (int i = 0; i < n; i++)				//开始输出arr数组中的数,就按正常输出2维数组那样输出{for (int j = 0; j < list_num; j++)			//注意这里j是<list_num (跟实际有n行,i<n一个道理){if (arr[i][j] == 0)	continue;	//当发现该坐标,数组中的数是0,则跳过(出现0跟当初定义vector容器时有关)else cout << arr[i][j];			//否则就正常输出数组中正常的数}}return 0;
}

参考(来自学长们题解):

这篇关于C-偶遇行军蚁(遇到过的题,做个笔记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871298

相关文章

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓