1731
http://acm.pku.edu.cn/JudgeOnline/problemstatus?problem_id=1731&orderby=clen&language=-1
98Bをとりあえず取れたー。
id:Ozy:20061209での予想通り、マクロは使ってません。
まず、a+strlen(a)の代わりにstrchr(a,0)を使いましょう。
後者には前者と大きな違いがあります。
それは引数です。後者は0という比較的生成しやすい定数を関数に渡しています。
つまり、引数に0になる式を埋め込めば0を書かずに済むので1byteお得です。
そして、ショートコードの基本テクニックとして、
gcc(mingw)のputsは帰り値が0というのがあります。
つまりstrchr(a,puts(a))を使えば良いのですよ!!
ちなみにこれを素直に使うと長くなるので後は二つのループをフラグで合成しましょう
#import<algo.h> char c,a[9]; main(){ for(gets(a); next_permutation(a, strchr(a,c&&puts(a)))||!c++ ;); }
注意点としてはcとaの順番を逆にしてはいけません。
バッファが微妙に溢れているのでaの後ろに置くと巻き添えをくらいます。