蓝桥杯试题 算法训练 文章翻转 C/C++

试题 算法训练 文章翻转

资源限制
时间限制:1.0s 内存限制:128.0MB
问题描述
  输入一段英文,不含标点,将这一段英文以单词为单位倒序输出
输入格式
  一段英文(段内不含换行),以换行符结尾。
输出格式
  一段英文(段内不含换行),以换行符结尾。
样例输入
aab TTR bbc loV DDE Znr CCD
样例输出
CCD Znr DDE loV bbc TTR aab
数据规模和约定
  60%的数据保证单词长度不超过20,字符长度不超过10^3
  100%的数据保证单词长度不超过105,字符长度不超过106

思路:尝试过直接输入一串字符再依据空格进行删选倒叙输出,发现空格录入不了,所以只能用C语言来解这道题,用gets将输入的一长串字符录入,再从后面向前面检测发现空格时则可以输出空格后的字符但需要做好记录,比如第一次遇见空格输出到字符串长度为止,并做好空格的位置,下次输出到此空格的位置即可,最后遇见空格时已经是开始的字符了,前面可能没有空格,所以需要从刚开始输入到最后的空格时即可。

代码如下:

#include<stdio.h>
#include<string.h>
char a[1000000];
int main(){
	int i=0,j,k;
	gets(a);
	j=strlen(a);
	for(i=j-1;i>=0;i--){
		if(a[i]==' '){
			for(k=i+1;k<j;k++){
				printf("%c",a[k]);
			}
			printf(" ");
			j=i;
		}
	}
	for(i=0;i<j;i++){
		printf("%c",a[i]);
	}
	return 0;
}
### C++蓝桥杯复习资料与解题技巧 #### 关于基础知识的学习 对于参加蓝桥杯竞赛的学生来说,掌握扎实的基础知识至关重要。这不仅包括编程语言本身的知识点,还涉及算法设计、数据结构等内容。例如,在C++中理解各种数据类型的范围及其应用是非常重要的[^2]。 #### 刷题的重要性 为了提高自己的竞争力,选手应当进行大量有针对性的题目练习。这些题目可以从历年真题或者在线评测平台获取。通过解决实际问题来巩固理论知识,并学会如何快速找到最优解决方案是一项必备技能[^1]。 #### 代码优化意识 编写高效而简洁的程序也是比赛中获胜的关键之一。因此,在日常训练过程中就要养成良好习惯——注意时间复杂度和空间复杂度分析;尝试多种方法实现同一功能以比较效率差异等等。 以下是几个常见类型题目的简单介绍及对应思路: - **字符串处理** 当涉及到复杂的字符操作时可以考虑使用标准库中的string类成员函数如find(), replace()等辅助完成任务。 ```cpp #include <iostream> using namespace std; int main(){ string s="hello world"; size_t found=s.find(' '); if(found!=string::npos){ cout << "First space found at position:" <<found<< endl; }else{ cout<<"No spaces"<<endl; } return 0;} ``` - **数组/矩阵运算** 对二维或多维表项执行特定规则下的变换往往需要用到循环嵌套配合条件判断语句共同作用。 ```cpp //假设我们要将n*n大小方阵沿主对角线翻转元素位置关系如下所示: void transposeMatrix(int mat[][N], int n) { for (int i=0;i<n;i++) for (int j=i+1;j<n;j++) swap(mat[i][j],mat[j][i]);} ``` - **动态规划入门实例** 动态规划是一种非常有效的解决问题的方法论框架,尤其适合那些具有重叠子问题特性的场景。比如经典的斐波那契数列计算就可以采用这种方式降低冗余计算量级从而提升性能表现。 ```cpp long long fib_dp(unsigned int n) { if(n<=1)return n; vector<long long>fibs(n+1);fibs[0]=0,fibs[1]=1; for(auto k=2u;k<=n;++k)fibs[k]=fibs[k-1]+fibs[k-2];return fibs[n];} ``` #### 模拟实战经验积累 最后一点就是尽可能多地参与模拟考试环境下的全真演练环节。这样不仅可以帮助熟悉考场氛围还能及时发现自身薄弱之处进而加以改进调整策略直至最佳状态迎战正式赛事到来之时^。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值