算法提高 递归倒置字符数组
时间限制:1.0s 内存限制:512.0MB
问题描述
完成一个递归程序,倒置字符数组。并打印实现过程
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入格式
字符数组长度及该数组
输出格式
在求解过程中,打印字符数组的变化情况。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
Sample 1 5 abcde
Sample 2 1 a
样例输出
Sample 1
ebcda
edcba
edcba
Sample 2
a
作者注释:按照题目要求编译到结果都没问题,但提交不过,蛋疼。
1 #include<stdio.h> 2 void daozhi(int begin,int end,char s[]){ 3 if(begin>=end) return; 4 else{ 5 char temp; 6 temp = s[begin]; 7 s[begin] = s[end]; 8 s[end] = temp; 9 printf("%s ",s); 10 daozhi(begin+1,end-1,s); 11 } 12 13 } 14 int main(){ 15 int len; 16 char s[10000]; 17 scanf("%d%s",&len,&s); 18 daozhi(0,len-1,s); 19 for(int i=0;i<len;i++){ 20 printf("%c",s[i]); 21 } 22 return 0; 23 }