私も昔遊んだことがあります。
複数の参加者の総当たり戦の合計点(7 さんが言ってるやつ)を競うなら
このあたりがそこそこ強かったっす。

勝手に opposit て int 型配列を使ってますが
つまり相手側の履歴です。

int prisoner(){
    static int hand = 0; /* 初期は“協調” */

    /* 過去,一度でも裏切られたら二度と協調しない */
    if (round > 1 && opposit[round - 1])
        hand = 1;

    return hand;
}