算法提高 递归倒置字符数组
时间限制:1.0s 内存限制:512.0MB
问题描述
完成一个递归程序,倒置字符数组。并打印实现过程
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入格式
字符数组长度及该数组
输出格式
在求解过程中,打印字符数组的变化情况。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
Sample 1 5 abcde Sample 2 1 a
样例输出
Sample 1
ebcda
edcba
edcba
Sample 2
a
代码:
#include<iostream>
#include<cstring> //strlen()
using namespace std;
char str[1000];
int i, j = 1;
void inverse(int len, char s[]) //导倒置字符数组
{
if (len == 1)
return;
else if (len>1)
{
swap(s[i++], s[strlen(str) - (j++)]); //倒置首尾字符
cout << s << endl;
len -= 2;
inverse(len, s);
}
}
int main()
{
int len;
cin >> len >> str;
inverse(len, str);
cout << endl << str << endl;
return 0;
}
这一题主要注意的是细心吧,代码是笔者的同学的(还没刷到这里),直接给人家Ctrl+V过来了,不好意思啦!
要告诉自己的就是:好好审题哦!
开学了!跟过去的那个自己说拜拜吧!做更现实,自信,勇敢一点的我!