カメヲラボ

主にプログラミングとお勉強全般について書いてます

if文なんてイラネ(゜⊿゜)?②

http://d.hatena.ne.jp/Ozy/20070113
の続き。
ちょうど、このとき書いたようなパターンが見つかった。
2945番の問題。

char s['~~'][21];a['~~'];k,n;
strcmp();
main(i){
  for(;gets(s+n);)
    if(*s[n++]<58){
      i=0;
      for(qsort(s,--n,21,strcmp);i<n;)
        strcmp(s+i,s+i++)?k=!++a[k]:++k;
      for(;k<n;a[k++]=0)printf("%d\n",a[k]);
      n=k=0;
    }
}

このコードでは入力値のデータ数を表す部分を全く使わないように書いている。その代わり、数値のデータが表れたところで条件分岐を行っているのだが、このような構造を持ったコードをif文を使わないものに書き換える場合のコストがある程度定量的に判断できないものだろうか。