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;
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587857.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黄金票据制作

1、黄金票据 黄金票据在内网渗透中主要用于权限维持&#xff0c;即留下后门。使用黄金票据前提是你已经控制了整个域的域控制器。其核心原理与服务器中的krbtgt用户相关。从以下可以了解krbtgt原理&#xff1a; 前言 | windows protocolhttps://daiker.gitbook.io/windows-pro…

开源布道 共创生态——2024 AutoMQ 布道师计划启动!

我们是来自 Apache RocketMQ 和 Linux LVS 项目的核心团队&#xff0c;曾经见证并应对过消息队列基础设施在大型互联网公司和云计算公司的挑战。基于对象存储优先、存算分离、多云原生等技术理念&#xff0c;我们重新设计并实现 Apache Kafka 和 Apache RocketMQ&#xff0c;带…

Vue2(完结):replace属性、编程式路由导航、缓存路由组件、两个新钩子、路由守卫、history与hash

一、router-link的replace属性 1、作用&#xff1a;控制路由跳转时操作浏览器历史记录的模式 2、浏览器的历史记录有两种写入方式&#xff1a;分别为push和replace&#xff0c;push是追加历史记录&#xff0c;replace是替换当前记录。路由跳转时候默认为push 3、如何开启repla…

Node.js知识点总结:从入门到入土

Node.js知识点总结&#xff1a;从入门到入土 node.js概念说明与相关知识储备了解基本概念&#xff1a;JavaScript基础能力&#xff1a;安装和设置Node.js环境&#xff1a;核心能力模块&#xff1a;重点能力-异步编程&#xff1a;使用npm管理依赖&#xff1a;构建Web应用&#x…

JVM垃圾收集——相关概念

本贴讲解的内容包括System.gc()、内存溢出、内存泄漏、STW机制以及垃圾收集的串行、并行、并发三种情况&#xff0c;还有强引用、软引用、弱引用、虚引用四种引用。 1、System.gc()的理解 在默认情况下&#xff0c;通过System.gc()或者Runtime.getRuntime().gc()的调用&#…

大数据分析与内存计算——Spark安装以及Hadoop操作——注意事项

一、Spark安装 1.相关链接 https://dblab.xmu.edu.cn/blog/4322/ 2.安装Spark&#xff08;Local模式&#xff09; 按照文章中的步骤安装即可 遇到问题&#xff1a;xshell以及xftp不能使用 解决办法&#xff1a; 在linux使用镜像网站进行下载&#xff1a;wget https://mi…

OpenCV 4.9基本绘图

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV使用通用内部函数对代码进行矢量化 下一篇&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; ​目标 在本教程中&#xff0c;您将学习如何&am…

【c++】类和对象(七)

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章来到类和对象的最后一部分 目录 1.static成员1.1特性 2.友元2.1引入&#xff1a;<<和>>的重载2.2友元函数2.3友元类 3.内部类4.匿名对象5.拷…

主干网络篇 | YOLOv8改进之用RCS-OSA替换C2f(来源于RCS-YOLO)

前言:Hello大家好,我是小哥谈。RCS-YOLO是一种目标检测算法,它是基于YOLOv3算法的改进版本。通过查看RCS-YOLO的整体架构可知,其中包括RCS-OSA模块。RCS-OSA模块在模型中用于堆叠RCS模块,以确保特征的复用并加强不同层之间的信息流动。本文就给大家详细介绍如何将RCS-YOLO…

代码随想录算法训练营DAY14|C++二叉树Part.1|二叉树的递归遍历、二叉树的迭代遍历、二叉树的统一迭代法

文章目录 二叉树的递归遍历思路CPP代码 二叉树的迭代遍历思路前序遍历后序遍历后序遍历 二叉树的统一迭代法 二叉树的递归遍历 144.二叉树的前序遍历、145.二叉树的后序遍历、94.二叉树的中序遍历 文章讲解&#xff1a;二叉树的递归遍历 视频讲解&#xff1a;每次写递归都要靠直…

如何开发创建自己的npm包并成功发布、维护至npm官方网站

npm&#xff0c;全称为Node Package Manager&#xff0c;是专为JavaScript生态系统设计的软件包管理系统&#xff0c;尤其与Node.js平台紧密关联。作为Node.js的默认包管理工具&#xff0c;npm为开发者提供了便捷的方式来安装、共享、分发和管理代码模块。 npm作为JavaScript世…

顶顶通呼叫中心中间件-话术编辑器机器人转人工坐席配置(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-话术编辑器机器人转人工座席配置(mod_cti基于FreeSWITCH) 配置方法 一、ACD排队转接 二、伴随转接 比如你设置的通知规则是任意满足一个就通知那么通话时间设置为10 秒那样他只要通话时间到10秒他就会转坐席。 如果要转人工的时侯转手机可以这样配置 把…