こんにちは!
dijkstra系男子のchigichanです。
今日、うpする問題はAOJ 0006 Reverse Sequenceです。
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0006
この問題は入力された文字列を、逆順にする問題です。
一応、C++にはreverse(array.begin(),array.end())とかいうのがありますが、それだと簡単すぎるので、違う解法を紹介します。
とりあえず、コード。
#include<stdio.h> #include<ctype.h> #include<string.h> int main(void) { char a[21],b[21]; int x,i,j; scanf("%s",a); x=strlen(a); for(i=0;i<=x;i++){ if(i==x){ b[i]=a[i]; } else{ b[x-i-1]=a[i]; } } printf("%s\n",b); return 0; }
コードの説明をすると、まずaの配列に文字を入力して、その文字列の終わりが来るまで、bの後ろから、文字を代入していきます。そして、\0が来たら、最後のところに\0をいれます。
これで、reverse関数に頼らずにreverseできましたね!
この技?はたまに使うので覚えておくといいと思います。