虽然这个题目一遍AC,但是心里还是忍不住骂了句shit!
花了一个小时,这个题目已经水到一定程度了,但是我却在反转这个操作上含糊不清,并且还是在采用了辅助数组的情况下,关系的理顺都如此之难。
其实我是想到了之前那次保研考试,让给数组里面的数换k位,我也是纠结好久没有写出个所以然,郁闷。
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 char ans[1002]; 5 char temp[1002]; 6 7 void divide(char a[],int n) 8 { 9 int cur=0,j=0,pricur=0; 10 for(int i=0;i<n;i++) 11 { 12 if(a[i]==' ') 13 { 14 int L=cur-pricur; 15 for(int x=0;x<L;x++) 16 { 17 temp[x+pricur]=a[L-1-x+pricur]; 18 } 19 for(int x=pricur;x<cur;x++) 20 { 21 a[x]=temp[x]; 22 } 23 cur++; 24 pricur=cur; 25 } 26 else 27 { 28 cur++; 29 } 30 } 31 int L=n-pricur; 32 for(int x=0;x<L;x++) 33 { 34 temp[x+pricur]=a[L-1-x+pricur]; 35 } 36 for(int x=pricur;x<n;x++) 37 { 38 a[x]=temp[x]; 39 } 40 } 41 42 int main() 43 { 44 int T,i; 45 scanf("%d",&T); 46 getchar(); 47 while(T--) 48 { 49 gets(ans); 50 divide(ans,strlen(ans)); 51 puts(ans); 52 } 53 54 return 0; 55 }
找规律什么的还有待改进,这速度有点慢。。